33 Concepts Every JS Developer Should Know

33 Concepts Every JavaScript Developer Should Know

Introduction

This repository was created with the intention of helping developers master their concepts in JavaScript. It is not a requirement, but a guide for future studies. It is based on an article written by Stephen Curtis and you can read it here.

🚀 Considered by GitHub as one of the top open source projects of 2018!

Community

Feel free to submit a PR by adding a link to your own recaps or reviews. If you want to translate the repo into your native language, please feel free to do so.

All the translations for this repo will be listed below:


  1. Call Stack
  2. Primitive Types
  3. Value Types and Reference Types
  4. Implicit, Explicit, Nominal, Structuring and Duck Typing
  5. == vs === vs typeof
  6. Function Scope, Block Scope and Lexical Scope
  7. Expression vs Statement
  8. IIFE, Modules and Namespaces
  9. Message Queue and Event Loop
  10. setTimeout, setInterval and requestAnimationFrame
  11. JavaScript Engines
  12. Bitwise Operators, Type Arrays and Array Buffers
  13. DOM and Layout Trees
  14. Factories and Classes
  15. this, call, apply and bind
  16. new, Constructor, instanceof and Instances
  17. Prototype Inheritance and Prototype Chain
  18. Object.create and Object.assign
  19. map, reduce, filter
  20. Pure Functions, Side Effects, State Mutation and Event Propagation
  21. Closures
  22. High Order Functions
  23. Recursion
  24. Collections and Generators
  25. Promises
  26. async/await
  27. Data Structures
  28. Expensive Operation and Big O Notation
  29. Algorithms
  30. Inheritance, Polymorphism and Code Reuse
  31. Design Patterns
  32. Partial Applications, Currying, Compose and Pipe
  33. Clean Code

1. Call Stack

Reference

Articles

video Videos

⬆ Back to Top


2. Primitive Types

Reference

Articles

video Videos

⬆ Back to Top


3. Value Types and Reference Types

Articles

video Videos

⬆ Back to Top


4. Implicit, Explicit, Nominal, Structuring and Duck Typing

Articles

video Videos

Books

⬆ Back to Top


5. == vs === vs typeof

Articles

video Videos

⬆ Back to Top


6. Function Scope, Block Scope and Lexical Scope

Books

Articles

video Videos

⬆ Back to Top


7. Expression vs Statement

Articles

video Videos

⬆ Back to Top


8. IIFE, Modules and Namespaces

Reference

Articles

video Videos

⬆ Back to Top


9. Message Queue and Event Loop

Articles

video Videos

⬆ Back to Top


10. setTimeout, setInterval and requestAnimationFrame

Articles

video Videos

⬆ Back to Top


11. JavaScript Engines

Articles

video Videos

⬆ Back to Top


12. Bitwise Operators, Type Arrays and Array Buffers

Articles

video Videos

⬆ Back to Top


13. DOM and Layout Trees

Books

Articles

video Videos

⬆ Back to Top


14. Factories and Classes

Articles

video Videos

⬆ Back to Top


15. this, call, apply and bind

Reference

Articles

video Videos

⬆ Back to Top


16. new, Constructor, instanceof and Instances

Articles

⬆ Back to Top


17. Prototype Inheritance and Prototype Chain

Reference

Articles

video Videos

Books

⬆ Back to Top


18. Object.create and Object.assign

Reference

Articles

video Videos

⬆ Back to Top


19. map, reduce, filter

Articles

video Videos

⬆ Back to Top


20. Pure Functions, Side Effects, State Mutation and Event Propagation

Articles

video Videos

⬆ Back to Top


21. Closures

Reference

Articles

video Videos

⬆ Back to Top


22. High Order Functions

Books

Articles

video Videos

⬆ Back to Top


23. Recursion

Articles

video Videos

⬆ Back to Top


24. Collections and Generators

Reference

Articles

video Videos

⬆ Back to Top


25. Promises

Reference

Articles

video Videos

⬆ Back to Top


26. async/await

Reference

Books

Articles

video Videos

⬆ Back to Top


27. Data Structures

Articles

video Videos

⬆ Back to Top


28. Expensive Operation and Big O Notation

Articles

video Videos

⬆ Back to Top


29. Algorithms

Articles

video Videos

⬆ Back to Top


30. Inheritance, Polymorphism and Code Reuse

Reference

Articles

video Videos

⬆ Back to Top


31. Design Patterns

Books

Articles

video Videos

⬆ Back to Top


32. Partial Applications, Currying, Compose and Pipe

Books

Articles

video Videos

⬆ Back to Top


33. Clean Code

Articles

video Videos

⬆ Back to Top

License

This software is licensed under MIT License, See License for more information ©Leonardo Maldonado.

leonardomso/33-js-concepts

{
"props": {
"initialPayload": {
"allShortcutsEnabled": false,
"path": "/",
"repo": {
"id": 147350463,
"defaultBranch": "master",
"name": "33-js-concepts",
"ownerLogin": "leonardomso",
"currentUserCanPush": false,
"isFork": false,
"isEmpty": false,
"createdAt": "2018-09-04T13:27:04.000Z",
"ownerAvatar": "https://avatars.githubusercontent.com/u/8030067?v=4",
"public": true,
"private": false,
"isOrgOwned": false
},
"currentUser": null,
"refInfo": {
"name": "master",
"listCacheKey": "v0:1665667089.07126",
"canEdit": false,
"refType": "branch",
"currentOid": "fc0260f510a76a6f6c026977f94043b028839ca4"
},
"tree": {
"items": [
{
"name": ".github",
"path": ".github",
"contentType": "directory"
},
{
"name": ".DS_Store",
"path": ".DS_Store",
"contentType": "file"
},
{
"name": ".gitignore",
"path": ".gitignore",
"contentType": "file"
},
{
"name": "CODE_OF_CONDUCT.md",
"path": "CODE_OF_CONDUCT.md",
"contentType": "file"
},
{
"name": "CONTRIBUTING.md",
"path": "CONTRIBUTING.md",
"contentType": "file"
},
{
"name": "LICENSE",
"path": "LICENSE",
"contentType": "file"
},
{
"name": "README.md",
"path": "README.md",
"contentType": "file"
},
{
"name": "index.js",
"path": "index.js",
"contentType": "file"
},
{
"name": "package.json",
"path": "package.json",
"contentType": "file"
}
],
"templateDirectorySuggestionUrl": null,
"readme": null,
"totalCount": 9,
"showBranchInfobar": false
},
"fileTree": null,
"fileTreeProcessingTime": null,
"foldersToFetch": [],
"treeExpanded": false,
"symbolsExpanded": false,
"isOverview": true,
"overview": {
"banners": {
"shouldRecommendReadme": false,
"isPersonalRepo": false,
"showUseActionBanner": false,
"actionSlug": null,
"actionId": null,
"showProtectBranchBanner": false,
"publishBannersInfo": {
"dismissActionNoticePath": "/settings/dismiss-notice/publish_action_from_repo",
"releasePath": "/leonardomso/33-js-concepts/releases/new?marketplace=true",
"showPublishActionBanner": false
},
"interactionLimitBanner": null,
"showInvitationBanner": false,
"inviterName": null
},
"codeButton": {
"contactPath": "/contact",
"isEnterprise": false,
"local": {
"protocolInfo": {
"httpAvailable": true,
"sshAvailable": null,
"httpUrl": "https://github.com/leonardomso/33-js-concepts.git",
"showCloneWarning": null,
"sshUrl": null,
"sshCertificatesRequired": null,
"sshCertificatesAvailable": null,
"ghCliUrl": "gh repo clone leonardomso/33-js-concepts",
"defaultProtocol": "http",
"newSshKeyUrl": "/settings/ssh/new",
"setProtocolPath": "/users/set_protocol"
},
"platformInfo": {
"cloneUrl": "https://desktop.github.com",
"showVisualStudioCloneButton": false,
"visualStudioCloneUrl": "https://windows.github.com",
"showXcodeCloneButton": false,
"xcodeCloneUrl": "https://developer.apple.com",
"zipballUrl": "/leonardomso/33-js-concepts/archive/refs/heads/master.zip"
}
},
"newCodespacePath": "/codespaces/new?hide_repo_select=true&repo=147350463"
},
"popovers": {
"rename": null,
"renamedParentRepo": null
},
"commitCount": "788",
"overviewFiles": [
{
"displayName": "README.md",
"repoName": "33-js-concepts",
"refName": "master",
"path": "README.md",
"preferredFileType": "readme",
"tabName": "README",
"richText": "<article class=\"markdown-body entry-content container-lg\" itemprop=\"text\"><div class=\"markdown-heading\" dir=\"auto\"><h1 align=\"center\" tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">\n<br>\n <a href=\"https://github.com/leonardomso/33\"><img src=\"https://camo.githubusercontent.com/72ac9dcf40aecee874a563f74d4cff85f23ad39d7179a674a3ef4797033c5b03/68747470733a2f2f692e696d6775722e636f6d2f6473486d6b36482e6a7067\" alt=\"33 Concepts Every JS Developer Should Know\" width=\"200&quot;\" data-canonical-src=\"https://i.imgur.com/dsHmk6H.jpg\" style=\"max-width: 100%;\"></a>\n <br>\n <br>\n 33 Concepts Every JavaScript Developer Should Know\n <br><br>\n</h1><a id=\"user-content-----------33-concepts-every-javascript-developer-should-know--\" class=\"anchor\" aria-label=\"Permalink: \n 33 Concepts Every JavaScript Developer Should Know\n \" href=\"#----------33-concepts-every-javascript-developer-should-know--\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Introduction</h2><a id=\"user-content-introduction\" class=\"anchor\" aria-label=\"Permalink: Introduction\" href=\"#introduction\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<p dir=\"auto\">This repository was created with the intention of helping developers master their concepts in JavaScript. It is not a requirement, but a guide for future studies. It is based on an article written by Stephen Curtis and you can read it <a href=\"https://medium.com/@stephenthecurt/33-fundamentals-every-javascript-developer-should-know-13dd720a90d1\" rel=\"nofollow\">here</a>.</p>\n<p dir=\"auto\"><strong>🚀 Considered by GitHub as one of the <a href=\"https://blog.github.com/2018-12-13-new-open-source-projects/\">top open source projects of 2018!</a></strong></p>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Community</h2><a id=\"user-content-community\" class=\"anchor\" aria-label=\"Permalink: Community\" href=\"#community\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<p dir=\"auto\">Feel free to submit a PR by adding a link to your own recaps or reviews. If you want to translate the repo into your native language, please feel free to do so.</p>\n<p dir=\"auto\">All the translations for this repo will be listed below:</p>\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/amrsekilly/33-js-concepts\">اَلْعَرَبِيَّةُ‎ (Arabic)</a> — Amr Elsekilly</li>\n<li><a href=\"https://github.com/thewebmasterp/33-js-concepts\">Български (Bulgarian)</a> - thewebmasterp</li>\n<li><a href=\"https://github.com/stephentian/33-js-concepts\">汉语 (Chinese)</a> — Re Tian</li>\n<li><a href=\"https://github.com/tiagoboeing/33-js-concepts\">Português do Brasil (Brazilian Portuguese)</a> — Tiago Boeing</li>\n<li><a href=\"https://github.com/yjs03057/33-js-concepts.git\">한국어 (Korean)</a> — Suin Lee</li>\n<li><a href=\"https://github.com/adonismendozaperez/33-js-conceptos\">Español (Spanish)</a> — Adonis Mendoza</li>\n<li><a href=\"https://github.com/ilker0/33-js-concepts\">Türkçe (Turkish)</a> — İlker Demir</li>\n<li><a href=\"https://github.com/gumennii/33-js-concepts\">русский язык (Russian)</a> — Mihail Gumennii</li>\n<li><a href=\"https://github.com/nguyentranchung/33-js-concepts\">Tiếng Việt (Vietnamese)</a> — Nguyễn Trần Chung</li>\n<li><a href=\"https://github.com/lip3k/33-js-concepts\">Polski (Polish)</a> — Dawid Lipinski</li>\n<li><a href=\"https://github.com/majidalavizadeh/33-js-concepts\">فارسی (Persian)</a> — Majid Alavizadeh</li>\n<li><a href=\"https://github.com/rijdz/33-js-concepts\">Bahasa Indonesia (Indonesian)</a> — Rijdzuan Sampoerna</li>\n<li><a href=\"https://github.com/robinmetral/33-concepts-js\">Français (French)</a> — Robin Métral</li>\n<li><a href=\"https://github.com/vikaschauhan/33-js-concepts\">हिन्दी (Hindi)</a> — Vikas Chauhan</li>\n<li><a href=\"https://github.com/DimitrisZx/33-js-concepts\">Ελληνικά (Greek)</a> — Dimitris Zarachanis</li>\n<li><a href=\"https://github.com/oimo23/33-js-concepts\">日本語 (Japanese)</a> — oimo23</li>\n<li><a href=\"https://github.com/burhannn/33-js-concepts\">Deutsch (German)</a> — burhannn</li>\n<li><a href=\"https://github.com/AndrewSavetchuk/33-js-concepts-ukrainian-translation\">украї́нська мо́ва (Ukrainian)</a> — Andrew Savetchuk</li>\n<li><a href=\"https://github.com/ududsha/33-js-concepts\">සිංහල (Sinhala)</a> — Udaya Shamendra</li>\n<li><a href=\"https://github.com/Donearm/33-js-concepts\">Italiano (Italian)</a> — Gianluca Fiore</li>\n<li><a href=\"https://github.com/ANormalStick/33-js-concepts\">Latviešu (Latvian)</a> - Jānis Īvāns</li>\n<li><a href=\"https://github.com/Amandagne/33-js-concepts\">Afaan Oromoo (Oromo)</a> - Amanuel Dagnachew</li>\n<li><a href=\"https://github.com/ninearif/33-js-concepts\">ภาษาไทย (Thai)</a> — Arif Waram</li>\n<li><a href=\"https://github.com/marioestradaf/33-js-concepts\">Català (Catalan)</a> — Mario Estrada</li>\n<li><a href=\"https://github.com/FenixHongell/33-js-concepts/\">Svenska (Swedish)</a> — Fenix Hongell</li>\n<li><a href=\"https://github.com/Chhunneng/33-js-concepts\">ខ្មែរ (Khmer)</a> — Chrea Chanchhunneng</li>\n<li><a href=\"https://github.com/hmhard/33-js-concepts\">አማርኛ (Ethiopian)</a> - Miniyahil Kebede(ምንያህል ከበደ)</li>\n<li><a href=\"https://github.com/Yafimau/33-js-concepts\">Беларуская мова (Belarussian)</a> — Dzianis Yafimau</li>\n<li><a href=\"https://github.com/smnv-shokh/33-js-concepts\">O'zbekcha (Uzbek)</a> — Shokhrukh Usmonov</li>\n<li><a href=\"https://github.com/yasir2002/33-js-concepts\">Urdu (اردو)</a> — Yasir Nawaz</li>\n<li><a href=\"https://github.com/dhruvchandak30/33-js-concepts\">Marathi (मराठी)</a> - Dhruv Chandak</li>\n<li><a href=\"https://github.com/milostivyy/33-js-concepts\">हिन्दी (Hindi)</a> — Mahima Chauhan</li>\n<li><a href=\"https://github.com/Jisan-mia/33-js-concepts\">বাংলা (Bengali)</a> — Jisan Mia</li>\n<li><a href=\"https://github.com/VatsalBhuva11/33-js-concepts\">ગુજરાતી (Gujarati)</a> — Vatsal Bhuva</li>\n<li><a href=\"https://github.com/Sunny-unik/33-js-concepts\">سنڌي (Sindhi)</a> — Sunny Gandhwani</li>\n<li><a href=\"https://github.com/debnath003/33-js-concepts\">भोजपुरी (Bhojpuri)</a> — Pronay Debnath</li>\n<li><a href=\"https://github.com/Harshdev098/33-js-concepts\">ਪੰਜਾਬੀ (Punjabi)</a> — Harsh Dev Pathak</li>\n<li><a href=\"https://github.com/Jaimin25/33-js-concepts\">தமிழ் (Tamil)</a> - Jaimin Chovatia</li>\n<li><a href=\"https://github.com/Harshdev098/33-js-concepts\">Latin (Latin)</a> — Harsh Dev Pathak</li>\n<li><a href=\"https://github.com/Stark-Akshay/33-js-concepts\">മലയാളം (Malayalam)</a> — Akshay Manoj</li>\n</ul>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/51e3466d744dc22009092e18b854887bdcf2177a439455b5a576cbfedc1c8966/68747470733a2f2f6d65646961342e67697068792e636f6d2f6d656469612f33686f4c4956414a596b7a365430496368702f67697068792e6769663f6369643d36633039623935326d346a33706f6f70696e66393172717565763671793465386176753062666c7131653076683467702665703d76315f696e7465726e616c5f6769665f62795f6964267269643d67697068792e6769662663743d73\"><img align=\"center\" width=\"50px\" height=\"50px\" src=\"https://camo.githubusercontent.com/51e3466d744dc22009092e18b854887bdcf2177a439455b5a576cbfedc1c8966/68747470733a2f2f6d65646961342e67697068792e636f6d2f6d656469612f33686f4c4956414a596b7a365430496368702f67697068792e6769663f6369643d36633039623935326d346a33706f6f70696e66393172717565763671793465386176753062666c7131653076683467702665703d76315f696e7465726e616c5f6769665f62795f6964267269643d67697068792e6769662663743d73\" data-animated-image=\"\" data-canonical-src=\"https://media4.giphy.com/media/3hoLIVAJYkz6T0Ichp/giphy.gif?cid=6c09b952m4j3poopinf91rquev6qy4e8avu0bflq1e0vh4gp&amp;ep=v1_internal_gif_by_id&amp;rid=giphy.gif&amp;ct=s\" style=\"max-width: 100%;\"></a> <a id=\"user-content-table-of-contents\">Table of Contents</a></h2><a id=\"user-content--table-of-contents\" class=\"anchor\" aria-label=\"Permalink: Table of Contents\" href=\"#-table-of-contents\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ol dir=\"auto\">\n<li><strong><a href=\"#1-call-stack\">Call Stack</a></strong></li>\n<li><strong><a href=\"#2-primitive-types\">Primitive Types</a></strong></li>\n<li><strong><a href=\"#3-value-types-and-reference-types\">Value Types and Reference Types</a></strong></li>\n<li><strong><a href=\"#4-implicit-explicit-nominal-structuring-and-duck-typing\">Implicit, Explicit, Nominal, Structuring and Duck Typing</a></strong></li>\n<li><strong><a href=\"#5--vs--vs-typeof\">== vs === vs typeof</a></strong></li>\n<li><strong><a href=\"#6-function-scope-block-scope-and-lexical-scope\">Function Scope, Block Scope and Lexical Scope</a></strong></li>\n<li><strong><a href=\"#7-expression-vs-statement\">Expression vs Statement</a></strong></li>\n<li><strong><a href=\"#8-iife-modules-and-namespaces\">IIFE, Modules and Namespaces</a></strong></li>\n<li><strong><a href=\"#9-message-queue-and-event-loop\">Message Queue and Event Loop</a></strong></li>\n<li><strong><a href=\"#10-settimeout-setinterval-and-requestanimationframe\">setTimeout, setInterval and requestAnimationFrame</a></strong></li>\n<li><strong><a href=\"#11-javascript-engines\">JavaScript Engines</a></strong></li>\n<li><strong><a href=\"#12-bitwise-operators-type-arrays-and-array-buffers\">Bitwise Operators, Type Arrays and Array Buffers</a></strong></li>\n<li><strong><a href=\"#13-dom-and-layout-trees\">DOM and Layout Trees</a></strong></li>\n<li><strong><a href=\"#14-factories-and-classes\">Factories and Classes</a></strong></li>\n<li><strong><a href=\"#15-this-call-apply-and-bind\">this, call, apply and bind</a></strong></li>\n<li><strong><a href=\"#16-new-constructor-instanceof-and-instances\">new, Constructor, instanceof and Instances</a></strong></li>\n<li><strong><a href=\"#17-prototype-inheritance-and-prototype-chain\">Prototype Inheritance and Prototype Chain</a></strong></li>\n<li><strong><a href=\"#18-objectcreate-and-objectassign\">Object.create and Object.assign</a></strong></li>\n<li><strong><a href=\"#19-map-reduce-filter\">map, reduce, filter</a></strong></li>\n<li><strong><a href=\"#20-pure-functions-side-effects-state-mutation-and-event-propagation\">Pure Functions, Side Effects, State Mutation and Event Propagation</a></strong></li>\n<li><strong><a href=\"#21-closures\">Closures</a></strong></li>\n<li><strong><a href=\"#22-high-order-functions\">High Order Functions</a></strong></li>\n<li><strong><a href=\"#23-recursion\">Recursion</a></strong></li>\n<li><strong><a href=\"#24-collections-and-generators\">Collections and Generators</a></strong></li>\n<li><strong><a href=\"#25-promises\">Promises</a></strong></li>\n<li><strong><a href=\"#26-asyncawait\">async/await</a></strong></li>\n<li><strong><a href=\"#27-data-structures\">Data Structures</a></strong></li>\n<li><strong><a href=\"#28-expensive-operation-and-big-o-notation\">Expensive Operation and Big O Notation</a></strong></li>\n<li><strong><a href=\"#29-algorithms\">Algorithms</a></strong></li>\n<li><strong><a href=\"#30-inheritance-polymorphism-and-code-reuse\">Inheritance, Polymorphism and Code Reuse</a></strong></li>\n<li><strong><a href=\"#31-design-patterns\">Design Patterns</a></strong></li>\n<li><strong><a href=\"#32-partial-applications-currying-compose-and-pipe\">Partial Applications, Currying, Compose and Pipe</a></strong></li>\n<li><strong><a href=\"#33-clean-code\">Clean Code</a></strong></li>\n</ol>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">1. Call Stack</h2><a id=\"user-content-1-call-stack\" class=\"anchor\" aria-label=\"Permalink: 1. Call Stack\" href=\"#1-call-stack\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Reference</h3><a id=\"user-content-reference\" class=\"anchor\" aria-label=\"Permalink: Reference\" href=\"#reference\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Glossary/Call_stack\" rel=\"nofollow\">Call Stack — MDN</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://medium.com/@gaurav.pandvia/understanding-javascript-function-executions-tasks-event-loop-call-stack-more-part-1-5683dea1f5ec\" rel=\"nofollow\">Understanding Javascript Call Stack, Event Loops — Gaurav Pandvia</a></li>\n<li><a href=\"https://medium.freecodecamp.org/understanding-the-javascript-call-stack-861e41ae61d4\" rel=\"nofollow\">Understanding the JavaScript Call Stack — Charles Freeborn</a></li>\n<li><a href=\"https://medium.com/@valentinog/javascript-what-is-the-execution-context-what-is-the-call-stack-bd23c78f10d1\" rel=\"nofollow\">Javascript: What Is The Execution Context? What Is The Call Stack? — Valentino Gagliardi</a></li>\n<li><a href=\"https://gist.github.com/jesstelford/9a35d20a2aa044df8bf241e00d7bc2d0\">What is the JS Event Loop and Call Stack? — Jess Telford</a></li>\n<li><a href=\"https://blog.bitsrc.io/understanding-execution-context-and-execution-stack-in-javascript-1c9ea8642dd0\" rel=\"nofollow\">Understanding Execution Context and Execution Stack in Javascript — Sukhjinder Arora</a></li>\n<li><a href=\"https://dev.to/bipinrajbhar/how-javascript-works-under-the-hood-an-overview-of-javascript-engine-heap-and-call-stack-1j5o\" rel=\"nofollow\">How JavaScript Works Under The Hood: An Overview of JavaScript Engine, Heap and, Call Stack — Bipin Rajbhar</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=W8AeMrVtFLY\" rel=\"nofollow\">The JS Call stack Explained in 9 minutes</a> - Colt Steel (YouTube)</li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=w6QGEiQceOM\" rel=\"nofollow\">Javascript: the Call Stack explained — Coding Blocks India</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=W8AeMrVtFLY\" rel=\"nofollow\">The JS Call Stack Explained In 9 Minutes — Colt Steele</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=w7QWQlkLY_s\" rel=\"nofollow\">What is the Call Stack? — Eric Traub</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Q2sFmqvpBe0\" rel=\"nofollow\">The Call Stack — Kevin Drumm</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Z6a1cLyq7Ac&amp;list=PLWrQZnG8l0E4kd1T_nyuVoxQUaYEWFgcD\" rel=\"nofollow\">Understanding JavaScript Execution — Codesmith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Nt-qa_LlUH0\" rel=\"nofollow\">The Ultimate Guide to Execution Contexts, Hoisting, Scopes, and Closures in JavaScript — Tyler McGinnis</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=8aGhZQkoFbQ\" rel=\"nofollow\">What the heck is the event loop anyway? — Philip Roberts</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=ygA5U7Wgsg8\" rel=\"nofollow\">La PILA DE EJECUCIÓN (Call Stack) de JavaScript — La Cocina del Código</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=iLWTnMzWtj4&amp;list=PLlasXeu85E9cQ32gLCvAvr9vNaUccPVNP\" rel=\"nofollow\">How JavaScript Code is executed? ❤️&amp; Call Stack — Akshay Saini</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=aCPkszeKRa4\" rel=\"nofollow\">Call Stacks - CS50</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=HXqXPGS96rw\" rel=\"nofollow\">Learn the JavaScript Call Stack - codecupdev</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=P6H-T4cUDR4\" rel=\"nofollow\">JavaScript Functions and the Call Stack | How does the Call stack work - Chidre'sTechTutorials</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">2. Primitive Types</h2><a id=\"user-content-2-primitive-types\" class=\"anchor\" aria-label=\"Permalink: 2. Primitive Types\" href=\"#2-primitive-types\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Reference</h3><a id=\"user-content-reference-1\" class=\"anchor\" aria-label=\"Permalink: Reference\" href=\"#reference-1\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Primitive_values\" rel=\"nofollow\">JavaScript data types and data structures — MDN</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-1\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-1\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.geeksforgeeks.org/primitive-and-non-primitive-data-types-in-javascript\" rel=\"nofollow\">Primitive and Non-primitive data-types in JavaScript - GeeksforGeeks</a></li>\n<li><a href=\"https://robiul.dev/javascript-variables-beginner-thinking\" rel=\"nofollow\">Javascript variables (Beginner thinking)</a></li>\n<li><a href=\"http://2ality.com/2012/04/number-encoding.html\" rel=\"nofollow\">How numbers are encoded in JavaScript — Dr. Axel Rauschmayer</a></li>\n<li><a href=\"https://indepth.dev/posts/1139/here-is-what-you-need-to-know-about-javascripts-number-type\" rel=\"nofollow\">What You Need to Know About JavaScript Number Type — Max Wizard K</a></li>\n<li><a href=\"https://blog.chewxy.com/2014/02/24/what-every-javascript-developer-should-know-about-floating-point-numbers/\" rel=\"nofollow\">What Every JavaScript Developer Should Know About Floating Point Numbers — Chewxy</a></li>\n<li><a href=\"https://javascriptweblog.wordpress.com/2010/09/27/the-secret-life-of-javascript-primitives/\" rel=\"nofollow\">The Secret Life of JavaScript Primitives — Angus Croll</a></li>\n<li><a href=\"https://flow.org/en/docs/types/primitives/\" rel=\"nofollow\">Primitive Types — Flow</a></li>\n<li><a href=\"https://dev.to/d4nyll/not-everything-in-javascript-is-an-object\" rel=\"nofollow\">(Not) Everything in JavaScript is an Object — Daniel Li</a></li>\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Primitive_values\" rel=\"nofollow\">JavaScript data types and data structures — MDN</a></li>\n<li><a href=\"https://blog.bitsrc.io/diving-deeper-in-javascripts-objects-318b1e13dc12\" rel=\"nofollow\">Diving Deeper in JavaScripts Objects — Arfat Salman</a></li>\n<li><a href=\"https://medium.com/@bolajiayodeji/the-differences-between-object-freeze-vs-const-in-javascript-4eacea534d7c\" rel=\"nofollow\">The differences between Object.freeze() vs Const in JavaScript — Bolaji Ayodeji</a></li>\n<li><a href=\"https://javascript.info/object-toprimitive\" rel=\"nofollow\">Object to primitive conversion — JavaScript.info</a></li>\n<li><a href=\"https://javascript.info/primitives-methods\" rel=\"nofollow\">Methods of primitives - Javascript.info</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-1\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-1\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=9ooYYRLdg_g\" rel=\"nofollow\">JavaScript Reference vs Primitive Types — Academind</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=HsbWQsSCE5Y\" rel=\"nofollow\">JavaScript Primitive Types — Simon Sez IT</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=e-_mDyqm2oU\" rel=\"nofollow\">Value Types and Reference Types in JavaScript — Programming with Mosh</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=qw3j0A3DIzQ\" rel=\"nofollow\">JavaScript Primitive Data Types — Avelx</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=MqHDDtVYJRI\" rel=\"nofollow\">Everything you never wanted to know about JavaScript numbers — Bartek Szopka</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=B4Bbmei_thw\" rel=\"nofollow\">What are variables in Javascript? — JS For Everyone</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=cC65D2q5f8I\" rel=\"nofollow\">TIPOS DE DATOS PRIMITIVOS en JAVASCRIPT - La Cocina del Código</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=aFDvBjVjCh8\" rel=\"nofollow\">Data Type in JavaScript - ScholarHat</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">3. Value Types and Reference Types</h2><a id=\"user-content-3-value-types-and-reference-types\" class=\"anchor\" aria-label=\"Permalink: 3. Value Types and Reference Types\" href=\"#3-value-types-and-reference-types\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-2\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-2\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://codeburst.io/explaining-value-vs-reference-in-javascript-647a975e12a0\" rel=\"nofollow\">Explaining Value vs. Reference in Javascript — Arnav Aggarwal</a></li>\n<li><a href=\"https://gist.github.com/branneman/7fb06d8a74d7e6d4cbcf75c50fec599c\">Primitive Types &amp; Reference Types in JavaScript — Bran van der Meer</a></li>\n<li><a href=\"https://medium.com/@benastontweet/lesson-1b-javascript-fundamentals-380f601ba851\" rel=\"nofollow\">Value Types, Reference Types and Scope in JavaScript — Ben Aston</a></li>\n<li><a href=\"https://medium.com/dailyjs/back-to-roots-javascript-value-vs-reference-8fb69d587a18\" rel=\"nofollow\">Back to roots: JavaScript Value vs Reference — Miro Koczka</a></li>\n<li><a href=\"https://hackernoon.com/grasp-by-value-and-by-reference-in-javascript-7ed75efa1293\" rel=\"nofollow\">Grasp “By Value” and “By Reference” in JavaScript — Léna Faure</a></li>\n<li><a href=\"https://hackernoon.com/javascript-reference-and-copy-variables-b0103074fdf0\" rel=\"nofollow\">JavaScript Reference and Copy Variables — Vítor Capretz</a></li>\n<li><a href=\"http://www.javascripttutorial.net/javascript-primitive-vs-reference-values/\" rel=\"nofollow\">JavaScript Primitive vs Reference Values</a></li>\n<li><a href=\"https://stackoverflow.com/questions/6605640/javascript-by-reference-vs-by-value\" rel=\"nofollow\">JavaScript by Reference vs. by Value — nrabinowitz</a></li>\n<li><a href=\"https://dev.to/mostlyfocusedmike/javascript-interview-prep-primitive-vs-reference-types-3o4f\" rel=\"nofollow\">JavaScript Interview Prep: Primitive vs. Reference Types — Mike Cronin</a></li>\n<li><a href=\"https://robiul.dev/foreach-method-in-javascript-a-comprehensive-guide\" rel=\"nofollow\">forEach method in JavaScript - A Comprehensive Guide</a></li>\n<li><a href=\"https://code.tutsplus.com/tutorials/javascript-map-vs-foreach-when-to-use-each-one--cms-38365\" rel=\"nofollow\">JavaScript map vs. forEach: When to Use Each One - Sajal Soni</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-2\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-2\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=E-dAnFdq8k8\" rel=\"nofollow\">Javascript Pass by Value vs Pass by Reference — techsith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=fD0t_DKREbE\" rel=\"nofollow\">JavaScript Value vs Reference Types — Programming with Mosh</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=AvkyOrWkuQc\" rel=\"nofollow\">VALORES vs REFERENCIAS en JAVASCRIPT - La Cocina del Código</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=9ooYYRLdg_g\" rel=\"nofollow\">JavaScript - Reference vs Primitive Values/ Types - Academind</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=e-_mDyqm2oU\" rel=\"nofollow\">Value Types and Reference Types in JavaScript - Programming with Mosh</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">4. Implicit, Explicit, Nominal, Structuring and Duck Typing</h2><a id=\"user-content-4-implicit-explicit-nominal-structuring-and-duck-typing\" class=\"anchor\" aria-label=\"Permalink: 4. Implicit, Explicit, Nominal, Structuring and Duck Typing\" href=\"#4-implicit-explicit-nominal-structuring-and-duck-typing\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-3\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-3\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://dev.to/promhize/what-you-need-to-know-about-javascripts-implicit-coercion-e23\" rel=\"nofollow\">What you need to know about Javascript's Implicit Coercion — Promise Tochi</a></li>\n<li><a href=\"https://medium.freecodecamp.org/js-type-coercion-explained-27ba3d9a2839\" rel=\"nofollow\">JavaScript Type Coercion Explained — Alexey Samoshkin</a></li>\n<li><a href=\"https://hackernoon.com/javascript-coercion-explained-545c895213d3\" rel=\"nofollow\">Javascript Coercion Explained — Ben Garrison</a></li>\n<li><a href=\"https://stackoverflow.com/questions/19915688/what-exactly-is-type-coercion-in-javascript\" rel=\"nofollow\">What exactly is Type Coercion in Javascript? - Stack Overflow</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-3\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-3\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=qGyqzN0bjhc&amp;t\" rel=\"nofollow\">== ? === ??? ...#@^% - Shirmung Bielefeld</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=b04Q_vyqEG8\" rel=\"nofollow\">Coercion in Javascript - Hitesh Choudhary</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=z4-8wMSPJyI\" rel=\"nofollow\">JavaScript Questions: What is Coercion? - Steven Hancock</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=C5fr0LZLMAs\" rel=\"nofollow\">Typing: Static vs Dynamic, Weak vs. Strong - Codexpanse</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=0ei4nb49GKo\" rel=\"nofollow\">EL SISTEMA de TIPOS DE JAVASCRIPT - La Cocina del Código</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=oEpgyoMEkrM\" rel=\"nofollow\">Duck Typing in Javascript - Techmaker Studio</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Books</h3><a id=\"user-content-books\" class=\"anchor\" aria-label=\"Permalink: Books\" href=\"#books\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/getify/You-Dont-Know-JS/tree/1st-ed\">You Don't Know JS, 1st Edition: Types &amp; Grammar — Kyle Simpson</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">5. == vs === vs typeof</h2><a id=\"user-content-5--vs--vs-typeof\" class=\"anchor\" aria-label=\"Permalink: 5. == vs === vs typeof\" href=\"#5--vs--vs-typeof\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-4\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-4\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://codeburst.io/javascript-double-equals-vs-triple-equals-61d4ce5a121a\" rel=\"nofollow\">JavaScript Double Equals vs. Triple Equals — Brandon Morelli</a></li>\n<li><a href=\"https://bytearcher.com/articles/equality-comparison-operator-javascript/\" rel=\"nofollow\">Should I use === or == equality comparison operator in JavaScript? — Panu Pitkamaki</a></li>\n<li><a href=\"https://www.impressivewebs.com/why-use-triple-equals-javascipt/\" rel=\"nofollow\">Why Use the Triple-Equals Operator in JavaScript? — Louis Lazaris</a></li>\n<li><a href=\"https://www.oreilly.com/learning/what-is-the-difference-between-and-in-javascript\" rel=\"nofollow\">What is the difference between == and === in JavaScript? — Craig Buckler</a></li>\n<li><a href=\"https://stackoverflow.com/questions/3787901/why-javascripts-typeof-always-return-object\" rel=\"nofollow\">Why javascript's typeof always return \"object\"? — Stack Overflow</a></li>\n<li><a href=\"http://tobyho.com/2011/01/28/checking-types-in-javascript/\" rel=\"nofollow\">Checking Types in Javascript — Toby Ho</a></li>\n<li><a href=\"https://webbjocke.com/javascript-check-data-types/\" rel=\"nofollow\">How to better check data types in JavaScript — Webbjocke</a></li>\n<li><a href=\"https://tomeraberba.ch/html/post/checking-for-the-absence-of-a-value-in-javascript.html\" rel=\"nofollow\">Checking for the Absence of a Value in JavaScript — Tomer Aberbach</a></li>\n<li><a href=\"https://www.scaler.com/topics/javascript/difference-between-double-equals-and-triple-equals-in-javascript/\" rel=\"nofollow\">Difference Between == and === in Javascript</a></li>\n<li><a href=\"https://www.geeksforgeeks.org/difference-between-double-equal-vs-triple-equal-javascript/\" rel=\"nofollow\">Difference between == and === in JavaScript — GeeksforGeeks</a></li>\n<li><a href=\"https://www.freecodecamp.org/news/javascript-triple-equals-sign-vs-double-equals-sign-comparison-operators-explained-with-examples/\" rel=\"nofollow\">=== vs == Comparision in JavaScript — FreeCodeCamp</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-4\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-4\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=ol_su88I3kw\" rel=\"nofollow\">JavaScript - The typeof operator — Java Brains</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=qPYhTPt_SbQ\" rel=\"nofollow\">Javascript typeof operator — DevDelight</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=C5ZVC4HHgIg\" rel=\"nofollow\">JavaScript \"==\" VS \"===\" — Web Dev Simplified</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=a0S1iG3TgP0\" rel=\"nofollow\">=== vs == in javascript - Hitesh Choudhary</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=NSS5WRcv7yM\" rel=\"nofollow\">The typeof operator in JS - CodeVault</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">6. Function Scope, Block Scope and Lexical Scope</h2><a id=\"user-content-6-function-scope-block-scope-and-lexical-scope\" class=\"anchor\" aria-label=\"Permalink: 6. Function Scope, Block Scope and Lexical Scope\" href=\"#6-function-scope-block-scope-and-lexical-scope\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Books</h3><a id=\"user-content-books-1\" class=\"anchor\" aria-label=\"Permalink: Books\" href=\"#books-1\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/getify/You-Dont-Know-JS/tree/2nd-ed/scope-closures\">You Don't Know JS Yet, 2nd Edition: Scope &amp; Closures — Kyle Simpson</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-5\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-5\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://codeburst.io/javascript-functions-understanding-the-basics-207dbf42ed99\" rel=\"nofollow\">JavaScript Functions — Understanding The Basics — Brandon Morelli</a></li>\n<li><a href=\"https://www.freecodecamp.org/news/var-let-and-const-whats-the-difference/\" rel=\"nofollow\">Var, Let, and Const – What's the Difference?</a></li>\n<li><a href=\"https://www.scaler.com/topics/javascript/javascript-functions/\" rel=\"nofollow\">Functions in JavaScript - Deepa Pandey</a></li>\n<li><a href=\"http://adripofjavascript.com/blog/drips/emulating-block-scope-in-javascript.html\" rel=\"nofollow\">Emulating Block Scope in JavaScript — Josh Clanton</a></li>\n<li><a href=\"https://medium.com/@josephcardillo/the-difference-between-function-and-block-scope-in-javascript-4296b2322abe\" rel=\"nofollow\">The Difference Between Function and Block Scope in JavaScript — Joseph Cardillo</a></li>\n<li><a href=\"https://edgecoders.com/function-scopes-and-block-scopes-in-javascript-25bbd7f293d7\" rel=\"nofollow\">Function Scopes and Block Scopes in JavaScript — Samer Buna</a></li>\n<li><a href=\"http://ryanmorr.com/understanding-scope-and-context-in-javascript/\" rel=\"nofollow\">Understanding Scope and Context in JavaScript — Ryan Morr</a></li>\n<li><a href=\"https://css-tricks.com/javascript-scope-closures/\" rel=\"nofollow\">JavaScript Scope and Closures — Zell Liew</a></li>\n<li><a href=\"https://developer.telerik.com/topics/web-development/understanding-scope-in-javascript/\" rel=\"nofollow\">Understanding Scope in JavaScript — Wissam Abirached</a></li>\n<li><a href=\"https://scotch.io/tutorials/understanding-scope-in-javascript\" rel=\"nofollow\">Understanding Scope in JavaScript ― Hammad Ahmed</a></li>\n<li><a href=\"https://medium.freecodecamp.org/when-to-use-a-function-declarations-vs-a-function-expression-70f15152a0a0\" rel=\"nofollow\">When to use a function declaration vs. a function expression ― Amber Wilkie</a></li>\n<li><a href=\"https://dev.to/alexandrafren/a-javascript-fundamentals-cheat-sheet-scope-context-and-this-28ai\" rel=\"nofollow\">A JavaScript Fundamentals Cheat Sheet: Scope, Context, and “this” ― Alexandra Fren</a></li>\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#function_scope\" rel=\"nofollow\">Functions / Function scope ― MDN</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-5\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-5\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=SBwoFkRjZvE\" rel=\"nofollow\">What Makes Javascript Weird ... and Awesome pt. 4 — LearnCode.academy</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=dhp57T3p760\" rel=\"nofollow\">Variable Scope in JavaScript — Kirupa Chinnathambi</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=aK_nuUAdr8E\" rel=\"nofollow\">JavaScript Block Scope and Function Scope — mmtuts</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=GhNA0r10MmA\" rel=\"nofollow\">What the Heck is Lexical Scope? — NWCalvank</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=FyWdrCZZavQ\" rel=\"nofollow\">Variable Scope — Steve Griffith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=W6NZfCO5SIk\" rel=\"nofollow\">Javascript Tutorials for Beginners — Mosh Hemadani</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=IaTztAtoNEY\" rel=\"nofollow\">JavaScript Block scope vs Function scope - nivek</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=qT5S7GgIioE\" rel=\"nofollow\">Lexical scoping in javascript - Hitesh Choudhary</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">7. Expression vs Statement</h2><a id=\"user-content-7-expression-vs-statement\" class=\"anchor\" aria-label=\"Permalink: 7. Expression vs Statement\" href=\"#7-expression-vs-statement\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-6\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-6\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li>\n<p dir=\"auto\"><a href=\"https://dev.to/promhize/javascript-in-depth-all-you-need-to-know-about-expressions-statements-and-expression-statements-5k2\" rel=\"nofollow\">All you need to know about Javascript's Expressions, Statements and Expression Statements — Promise Tochi</a></p>\n</li>\n<li>\n<p dir=\"auto\"><a href=\"https://www.sitepoint.com/function-expressions-vs-declarations/\" rel=\"nofollow\">Function Expressions vs Function Declarations — Paul Wilkins</a></p>\n</li>\n<li>\n<p dir=\"auto\"><a href=\"https://medium.com/@raviroshan.talk/javascript-function-declaration-vs-expression-f5873b8c7b38\" rel=\"nofollow\">JavaScript Function — Declaration vs Expression — Ravi Roshan</a></p>\n</li>\n<li>\n<p dir=\"auto\"><a href=\"https://medium.com/@mandeep1012/function-declarations-vs-function-expressions-b43646042052\" rel=\"nofollow\">Function Declarations vs. Function Expressions — Mandeep Singh</a></p>\n</li>\n<li>\n<p dir=\"auto\"><a href=\"https://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/\" rel=\"nofollow\">Function Declarations vs. Function Expressions — Anguls Croll</a></p>\n</li>\n<li>\n<p dir=\"auto\">📜 <a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/Expression_statement\" rel=\"nofollow\">Expression statement — MDN web docs</a></p>\n</li>\n<li>\n<p dir=\"auto\">📜 <a href=\"https://dev.to/promhize/javascript-in-depth-all-you-need-to-know-about-expressions-statements-and-expression-statements-5k2\" rel=\"nofollow\">All you need to know about Javascript's Expressions, Statements and Expression Statements — Promise Tochi</a></p>\n</li>\n<li>\n<p dir=\"auto\">📜 <a href=\"https://www.sitepoint.com/function-expressions-vs-declarations/\" rel=\"nofollow\">Function Expressions vs Function Declarations — Paul Wilkins</a></p>\n</li>\n<li>\n<p dir=\"auto\">📜 <a href=\"https://medium.com/@raviroshan.talk/javascript-function-declaration-vs-expression-f5873b8c7b38\" rel=\"nofollow\">JavaScript Function — Declaration vs Expression — Ravi Roshan</a></p>\n</li>\n<li>\n<p dir=\"auto\">📜 <a href=\"https://medium.com/@mandeep1012/function-declarations-vs-function-expressions-b43646042052\" rel=\"nofollow\">Function Declarations vs. Function Expressions — Mandeep Singh</a></p>\n</li>\n<li>\n<p dir=\"auto\">📜 <a href=\"https://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/\" rel=\"nofollow\">Function Declarations vs. Function Expressions — Anguls Croll</a></p>\n</li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-6\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-6\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=WVyCrI1cHi8\" rel=\"nofollow\">Expressions vs. Statements in JavaScript — Hexlet</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=3jDpNGJkupA\" rel=\"nofollow\">JavaScript - Expression vs. Statement — WebTunings</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=qz7Nq1tV7Io\" rel=\"nofollow\">Javascript Function Expression Vs Declaration For Beginners — Dev Material</a></li>\n<li><a href=\"https://youtu.be/eWTuFoBYiwg\" rel=\"nofollow\">The difference between an expression and a statement in JavaScript</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=cVDs3TZ-kXs\" rel=\"nofollow\">Expression in javascript | Statement in javascript - Sathelli Srikanth</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">8. IIFE, Modules and Namespaces</h2><a id=\"user-content-8-iife-modules-and-namespaces\" class=\"anchor\" aria-label=\"Permalink: 8. IIFE, Modules and Namespaces\" href=\"#8-iife-modules-and-namespaces\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Reference</h3><a id=\"user-content-reference-2\" class=\"anchor\" aria-label=\"Permalink: Reference\" href=\"#reference-2\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Glossary/IIFE\" rel=\"nofollow\">IIFE — MDN</a></li>\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Glossary/modularity\" rel=\"nofollow\">Modularity — MDN</a></li>\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Glossary/Namespace\" rel=\"nofollow\">Namespace — MDN</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-7\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-7\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://medium.com/@vvkchandra/essential-javascript-mastering-immediately-invoked-function-expressions-67791338ddc6\" rel=\"nofollow\">Mastering Immediately-Invoked Function Expressions ― Chandra Gundamaraju</a></li>\n<li><a href=\"https://www.javascripttutorial.net/javascript-immediately-invoked-function-expression-iife/\" rel=\"nofollow\">JavaScript Immediately Invoked Function Expression — javascripttutorial.net</a></li>\n<li><a href=\"https://hashnode.com/post/do-es6-modules-make-the-case-of-iifes-obsolete-civ96wet80scqgc538un20es0\" rel=\"nofollow\">Do ES6 Modules make the case of IIFEs obsolete?</a></li>\n<li><a href=\"https://www.jvandemo.com/a-10-minute-primer-to-javascript-modules-module-formats-module-loaders-and-module-bundlers/\" rel=\"nofollow\">A 10 minute primer to JavaScript modules, module formats, module loaders and module bundlers ― Jurgen Van de Moere</a></li>\n<li><a href=\"http://exploringjs.com/es6/ch_modules.html\" rel=\"nofollow\">Modules ― Exploring JS</a></li>\n<li><a href=\"https://hacks.mozilla.org/2018/03/es-modules-a-cartoon-deep-dive/\" rel=\"nofollow\">ES modules: A cartoon deep-dive — Lin Clark</a></li>\n<li><a href=\"https://www.sitepoint.com/understanding-es6-modules/\" rel=\"nofollow\">Understanding ES6 Modules — Craig Buckler</a></li>\n<li><a href=\"https://blog.cloud66.com/an-overview-of-es6-modules-in-javascript/\" rel=\"nofollow\">An overview of ES6 Modules in JavaScript — Brent Graham</a></li>\n<li><a href=\"https://ponyfoo.com/articles/es6-modules-in-depth\" rel=\"nofollow\">ES6 Modules in Depth — Nicolás Bevacqua</a></li>\n<li><a href=\"https://medium.com/dailyjs/es6-modules-node-js-and-the-michael-jackson-solution-828dc244b8b\" rel=\"nofollow\">ES6 modules, Node.js and the Michael Jackson Solution — Alberto Gimeno</a></li>\n<li><a href=\"https://medium.freecodecamp.org/javascript-modules-a-beginner-s-guide-783f7d7a5fcc\" rel=\"nofollow\">JavaScript Modules: A Beginner’s Guide — Preethi Kasireddy</a></li>\n<li><a href=\"https://developers.google.com/web/fundamentals/primers/modules\" rel=\"nofollow\">Using JavaScript modules on the web — Addy Osmani &amp; Mathias Bynens</a></li>\n<li><a href=\"https://dev.to/bhagatparwinder/iife-immediately-invoked-function-expressions-49c5\" rel=\"nofollow\">IIFE: Immediately Invoked Function Expressions — Parwinder</a></li>\n<li><a href=\"https://sassy-butter-197.notion.site/Javascript-bundlers-016932b17b0744e983c2cc0db31e6f02\" rel=\"nofollow\">Javascript Module Bundlers — Vanshu Hassija</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-7\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-7\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=3cbiZV4H22c\" rel=\"nofollow\">Immediately Invoked Function Expression - Beau teaches JavaScript — freeCodeCamp</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=I5EntfMeIIQ\" rel=\"nofollow\">Understanding JavaScript IIFE — Sheo Narayan</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=_3oSWwapPKQ\" rel=\"nofollow\">JavaScript Modules: ES6 Import and Export — Kyle Robinson</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=aQr2bV1BPyE\" rel=\"nofollow\">ES6 - Modules — Ryan Christiani</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=fIP4pjAqCtQ\" rel=\"nofollow\">ES6 Modules in the Real World — Sam Thorogood</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=5P04OK6KlXA\" rel=\"nofollow\">ES6 Modules — TempleCoding</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Xd7zgPFwVX8&amp;\" rel=\"nofollow\">JavaScript IIFE (Immediately Invoked Function Expressions) — Steve Griffith</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">9. Message Queue and Event Loop</h2><a id=\"user-content-9-message-queue-and-event-loop\" class=\"anchor\" aria-label=\"Permalink: 9. Message Queue and Event Loop\" href=\"#9-message-queue-and-event-loop\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-8\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-8\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://medium.com/front-end-hacking/javascript-event-loop-explained-4cd26af121d4\" rel=\"nofollow\">JavaScript Event Loop Explained — Anoop Raveendran</a></li>\n<li><a href=\"https://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/\" rel=\"nofollow\">The JavaScript Event Loop: Explained — Erin Sweson-Healey</a></li>\n<li><a href=\"https://hackernoon.com/understanding-js-the-event-loop-959beae3ac40\" rel=\"nofollow\">Understanding JS: The Event Loop — Alexander Kondov</a></li>\n<li><a href=\"https://flaviocopes.com/javascript-event-loop/\" rel=\"nofollow\">The JavaScript Event Loop — Flavio Copes</a></li>\n<li><a href=\"https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/\" rel=\"nofollow\">Tasks, microtasks, queues and schedules — Jake Archibald</a></li>\n<li><a href=\"https://dev.to/presto412/visualising-the-javascript-event-loop-with-a-pizza-restaurant-analogy-47a8\" rel=\"nofollow\">Visualising the JavaScript Event Loop with a Pizza Restaurant analogy — Priyansh Jain</a></li>\n<li><a href=\"https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif\" rel=\"nofollow\">JavaScript Visualized: Event Loop — Lydia Hallie</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-8\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-8\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=8aGhZQkoFbQ\" rel=\"nofollow\">What the heck is the event loop anyway? | JSConf EU — Philip Roberts</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=XzXIMZMN9k4\" rel=\"nofollow\">JavaScript Event Loop — ComScience Simplified</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=6MXRNXXgP_0\" rel=\"nofollow\">I'm stuck in an Event Loop — Philip Roberts</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=cCOL7MC4Pl0\" rel=\"nofollow\">In The Loop - Jake Archibald | JSConf.Asia 2018</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Eqq2Rb7LzYE\" rel=\"nofollow\">Desmitificando el Event Loop (Spanish)</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=6lbBaM18X3g\" rel=\"nofollow\">Callbacks, Sincrono, Assíncrono e Event Loop (PT-BR)</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=6lbBaM18X3g\" rel=\"nofollow\">JavaScript Event Loop: How it Works and Why it Matters in 5 Minutes - James Q Quick</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">10. setTimeout, setInterval and requestAnimationFrame</h2><a id=\"user-content-10-settimeout-setinterval-and-requestanimationframe\" class=\"anchor\" aria-label=\"Permalink: 10. setTimeout, setInterval and requestAnimationFrame\" href=\"#10-settimeout-setinterval-and-requestanimationframe\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-9\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-9\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://robiul.dev/javascript-settimeout-all-you-need-to-know\" rel=\"nofollow\">Javascript setTimeout - All you need to know</a></li>\n<li><a href=\"https://javascript.info/settimeout-setinterval\" rel=\"nofollow\">setTimeout and setInterval — JavaScript.Info</a></li>\n<li><a href=\"https://dev.to/akanksha_9560/why-not-to-use-setinterval--2na9\" rel=\"nofollow\">Why not to use setInterval — Akanksha Sharma</a></li>\n<li><a href=\"https://develoger.com/settimeout-vs-setinterval-cff85142555b\" rel=\"nofollow\">setTimeout VS setInterval — Develoger</a></li>\n<li><a href=\"https://css-tricks.com/using-requestanimationframe/\" rel=\"nofollow\">Using requestAnimationFrame — Chris Coyier</a></li>\n<li><a href=\"http://www.javascriptkit.com/javatutors/requestanimationframe.shtml\" rel=\"nofollow\">Understanding JavaScript's requestAnimationFrame() — JavaScript Kit</a></li>\n<li><a href=\"https://www.amitmerchant.com/Handling-Time-Intervals-In-Javascript/\" rel=\"nofollow\">Handling time intervals in JavaScript - Amit Merchant</a></li>\n<li><a href=\"https://www.freecodecamp.org/news/javascript-debounce-example/\" rel=\"nofollow\">Debounce – How to Delay a Function in JavaScript - Ondrej Polesny</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-9\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-9\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=6bPKyl8WYWI\" rel=\"nofollow\">Javascript: How setTimeout and setInterval works — Coding Blocks India</a></li>\n<li><a href=\"https://youtu.be/nqsPmuicJJc?si=4FXKlZfqiJUqO2Y4\" rel=\"nofollow\">TRUST ISSUES with setTimeout() — Akshay Saini </a></li>\n<li><a href=\"https://www.youtube.com/watch?v=TbCgGWe8LN8\" rel=\"nofollow\">setTimeout and setInterval in JavaScript — techsith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=0VVJSvlUgtg\" rel=\"nofollow\">JavaScript Timers — Steve Griffith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=mVKfrWCOB60\" rel=\"nofollow\">JavaScript setTimeOut and setInterval Explained — Theodore Anderson</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">11. JavaScript Engines</h2><a id=\"user-content-11-javascript-engines\" class=\"anchor\" aria-label=\"Permalink: 11. JavaScript Engines\" href=\"#11-javascript-engines\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-10\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-10\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://robiul.dev/is-javascript-compiled-or-interpreted-language\" rel=\"nofollow\">Is javascript compiled or interpreted language?</a></li>\n<li><a href=\"http://www.softwaremag.com/javascript-engines/\" rel=\"nofollow\">JavaScript Engines — Jen Looper</a></li>\n<li><a href=\"https://medium.freecodecamp.org/understanding-the-core-of-nodejs-the-powerful-chrome-v8-engine-79e7eb8af964\" rel=\"nofollow\">Understanding How the Chrome V8 Engine Translates JavaScript into Machine Code — DroidHead</a></li>\n<li><a href=\"https://medium.com/dailyjs/understanding-v8s-bytecode-317d46c94775\" rel=\"nofollow\">Understanding V8’s Bytecode — Franziska Hinkelmann</a></li>\n<li><a href=\"https://www.mediacurrent.com/blog/brief-history-googles-v8-javascript-engine/\" rel=\"nofollow\">A Brief History of Google’s V8 Javascript Engine — Clair Smith</a></li>\n<li><a href=\"https://www.freecodecamp.org/news/javascript-essentials-why-you-should-know-how-the-engine-works-c2cc0d321553\" rel=\"nofollow\">JavaScript essentials: why you should know how the engine works - Rainer Hahnekamp</a></li>\n<li><a href=\"https://mathiasbynens.be/notes/shapes-ics\" rel=\"nofollow\">JavaScript engine fundamentals: Shapes and Inline Caches</a></li>\n<li><a href=\"https://mathiasbynens.be/notes/prototypes\" rel=\"nofollow\">JavaScript engine fundamentals: optimizing prototypes</a></li>\n<li><a href=\"https://v8.dev/blog/elements-kinds\" rel=\"nofollow\">How V8 optimizes array operations</a></li>\n<li><a href=\"https://blog.bitsrc.io/javascript-internals-javascript-engine-run-time-environment-settimeout-web-api-eeed263b1617\" rel=\"nofollow\">JavaScript Internals: JavaScript engine, Run-time environment &amp; setTimeout Web API — Rupesh Mishra</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-10\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-10\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=5nmpokoRaZI\" rel=\"nofollow\">JavaScript Engines: The Good Parts™ — Mathias Bynens &amp; Benedikt Meurer</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=2WJL19wDH68\" rel=\"nofollow\">JS Engine EXPOSED 🔥 Google's V8 Architecture 🚀 | Namaste JavaScript Ep. 16 - Akshay Saini</a></li>\n<li><a href=\"https://youtu.be/iLWTnMzWtj4\" rel=\"nofollow\">How JavaScript Code is executed? How Javascript works behind the scenes</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=xckH5s3UuX4\" rel=\"nofollow\">Understanding the V8 JavaScript Engine - freeCodeCamp Talks</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=oc6faXVc54E\" rel=\"nofollow\">JavaScript Under The Hood - JavaScript Engine Overview - Traversy Media</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">12. Bitwise Operators, Type Arrays and Array Buffers</h2><a id=\"user-content-12-bitwise-operators-type-arrays-and-array-buffers\" class=\"anchor\" aria-label=\"Permalink: 12. Bitwise Operators, Type Arrays and Array Buffers\" href=\"#12-bitwise-operators-type-arrays-and-array-buffers\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-11\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-11\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://hackernoon.com/programming-with-js-bitwise-operations-393eb0745dc4\" rel=\"nofollow\">Programming with JS: Bitwise Operations — Alexander Kondov</a></li>\n<li><a href=\"https://codeburst.io/using-javascript-bitwise-operators-in-real-life-f551a731ff5\" rel=\"nofollow\">Using JavaScript’s Bitwise Operators in Real Life — ian m</a></li>\n<li><a href=\"https://www.w3resource.com/javascript/operators/bitwise-operator.php\" rel=\"nofollow\">JavaScript Bitwise Operators — w3resource</a></li>\n<li><a href=\"https://medium.com/bother7-blog/bitwise-operators-in-javascript-65c4c69be0d3\" rel=\"nofollow\">Bitwise Operators in Javascript — Joe Cha</a></li>\n<li><a href=\"https://medium.com/techtrument/a-comprehensive-primer-on-binary-computation-and-bitwise-operators-in-javascript-81acf8341f04\" rel=\"nofollow\">A Comprehensive Primer on Binary Computation and Bitwise Operators in Javascript — Paul Brown</a></li>\n<li><a href=\"https://www.quora.com/How-can-I-understand-Bitwise-operation-in-JavaScript\" rel=\"nofollow\">How can I understand Bitwise operation in JavaScript?</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-11\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-11\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=mesu75PTDC8\" rel=\"nofollow\">JavaScript Bitwise Operators — Programming with Mosh</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=igIjGxF2J-w\" rel=\"nofollow\">Bitwise Operators and WHY we use them — Alex Hyett</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=RRyxCmLX_ag\" rel=\"nofollow\">JS Bitwise Operators and Binary Numbers — Steve Griffith - Prof3ssorSt3v3</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=ScZZoHj7mqY\" rel=\"nofollow\">Deep Dive into Blobs, Files, and ArrayBuffers — Steve Griffith - Prof3ssorSt3v3</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">13. DOM and Layout Trees</h2><a id=\"user-content-13-dom-and-layout-trees\" class=\"anchor\" aria-label=\"Permalink: 13. DOM and Layout Trees\" href=\"#13-dom-and-layout-trees\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Books</h3><a id=\"user-content-books-2\" class=\"anchor\" aria-label=\"Permalink: Books\" href=\"#books-2\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://eloquentjavascript.net/14_dom.html\" rel=\"nofollow\">Eloquent JavaScript, 3rd Edition: Ch. 14 - The Document Object Model</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-12\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-12\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.digitalocean.com/community/tutorials/introduction-to-the-dom\" rel=\"nofollow\">How To Understand and Modify the DOM in JavaScript — Tania Rascia</a></li>\n<li><a href=\"https://medium.freecodecamp.org/whats-the-document-object-model-and-why-you-should-know-how-to-use-it-1a2d0bc5429d\" rel=\"nofollow\">What’s the Document Object Model, and why you should know how to use it — Leonardo Maldonado</a></li>\n<li><a href=\"https://www.guru99.com/how-to-use-dom-and-events-in-javascript.html\" rel=\"nofollow\">JavaScript DOM Tutorial with Example — Guru99</a></li>\n<li><a href=\"https://css-tricks.com/dom/\" rel=\"nofollow\">What is the DOM? — Chris Coyier</a></li>\n<li><a href=\"https://zellwk.com/blog/dom-traversals/\" rel=\"nofollow\">Traversing the DOM with JavaScript — Zell Liew</a></li>\n<li><a href=\"https://javascript.info/dom-nodes\" rel=\"nofollow\">DOM Tree</a></li>\n<li><a href=\"https://medium.com/javascript-in-plain-english/how-to-traverse-the-dom-in-javascript-d6555c335b4e\" rel=\"nofollow\">How to traverse the DOM in Javascript — Vojislav Grujić</a></li>\n<li><a href=\"https://developers.google.com/web/fundamentals/performance/critical-rendering-path/render-tree-construction\" rel=\"nofollow\">Render Tree Construction — Ilya Grigorik</a></li>\n<li><a href=\"https://bitsofco.de/what-exactly-is-the-dom/\" rel=\"nofollow\">What exactly is the DOM?</a></li>\n<li><a href=\"https://www.javascripttutorial.net/javascript-dom/\" rel=\"nofollow\">JavaScript DOM</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Pr4LLrmDLLo\" rel=\"nofollow\">Traversing the Dom with Javascript</a> - Steve Griffith (YouTube)</li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-12\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-12\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=FIORjGvT0kk\" rel=\"nofollow\">JavaScript DOM — The Net Ninja</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=0ik6X4DJKCc\" rel=\"nofollow\">JavaScript DOM Crash Course — Traversy Media</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=y17RuWkWdn8\" rel=\"nofollow\">JavaScript DOM Manipulation Methods — Web Dev Simplified</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=v7rSSy8CaYE\" rel=\"nofollow\">JavaScript DOM Traversal Methods — Web Dev Simplified</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">14. Factories and Classes</h2><a id=\"user-content-14-factories-and-classes\" class=\"anchor\" aria-label=\"Permalink: 14. Factories and Classes\" href=\"#14-factories-and-classes\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-13\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-13\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.digitalocean.com/community/tutorials/understanding-classes-in-javascript\" rel=\"nofollow\">How To Use Classes in JavaScript — Tania Rascia</a></li>\n<li><a href=\"https://medium.com/tech-tajawal/javascript-classes-under-the-hood-6b26d2667677\" rel=\"nofollow\">Javascript Classes — Under The Hood — Majid</a></li>\n<li><a href=\"https://scotch.io/tutorials/better-javascript-with-es6-pt-ii-a-deep-dive-into-classes\" rel=\"nofollow\">Better JavaScript with ES6, Pt. II: A Deep Dive into Classes ― Peleke Sengstacke</a></li>\n<li><a href=\"https://medium.com/front-end-hacking/understand-the-factory-design-pattern-in-plain-javascript-20b348c832bd\" rel=\"nofollow\">Understand the Factory Design Pattern in Plain JavaScript — Aditya Agarwal</a></li>\n<li><a href=\"https://atendesigngroup.com/blog/factory-functions-javascript\" rel=\"nofollow\">Factory Functions in JavaScript — Josh Miller</a></li>\n<li><a href=\"https://medium.com/@SntsDev/the-factory-pattern-in-js-es6-78f0afad17e9\" rel=\"nofollow\">The Factory Pattern in JS ES6 — SnstsDev</a></li>\n<li><a href=\"https://medium.freecodecamp.org/class-vs-factory-function-exploring-the-way-forward-73258b6a8d15\" rel=\"nofollow\">Class vs Factory function: exploring the way forward — Cristi Salcescu</a></li>\n<li><a href=\"https://medium.com/@robertgrosse/how-es6-classes-really-work-and-how-to-build-your-own-fd6085eb326a\" rel=\"nofollow\">How ES6 classes really work and how to build your own — Robert Grosse</a></li>\n<li><a href=\"https://jordankasper.com/understanding-super-in-javascript\" rel=\"nofollow\">Understanding <code>super</code> in JavaScript</a></li>\n<li><a href=\"https://dev.to/lawrence_eagles/an-easy-guide-to-understanding-classes-in-javascript-3bcm\" rel=\"nofollow\">An Easy Guide To Understanding Classes In JavaScript</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-13\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-13\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=jpegXpQpb3o\" rel=\"nofollow\">JavaScript Factory Functions — Programming with Mosh</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=ImwrezYhw4w\" rel=\"nofollow\">Factory Functions in JavaScript — Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=R7-IwpH80UE\" rel=\"nofollow\">Javascript Tutorial Function Factories — Crypto Chan</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">15. this, call, apply and bind</h2><a id=\"user-content-15-this-call-apply-and-bind\" class=\"anchor\" aria-label=\"Permalink: 15. this, call, apply and bind\" href=\"#15-this-call-apply-and-bind\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Reference</h3><a id=\"user-content-reference-3\" class=\"anchor\" aria-label=\"Permalink: Reference\" href=\"#reference-3\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call\" rel=\"nofollow\">call() — MDN</a></li>\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind\" rel=\"nofollow\">bind() — MDN</a></li>\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply\" rel=\"nofollow\">apply() — MDN</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-14\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-14\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://levelup.gitconnected.com/grokking-call-apply-and-bind-methods-in-javascript-392351a4be8b\" rel=\"nofollow\">Grokking call(), apply() and bind() methods in JavaScript — Aniket Kudale</a></li>\n<li><a href=\"http://javascriptissexy.com/javascript-apply-call-and-bind-methods-are-essential-for-javascript-professionals/\" rel=\"nofollow\">JavaScript’s Apply, Call, and Bind Methods are Essential for JavaScript Professionals — Richard Bovell</a></li>\n<li><a href=\"https://medium.com/@omergoldberg/javascript-call-apply-and-bind-e5c27301f7bb\" rel=\"nofollow\">Javascript: call(), apply() and bind() — Omer Goldberg</a></li>\n<li><a href=\"https://medium.com/@ivansifrim/the-differences-between-call-apply-bind-276724bb825b\" rel=\"nofollow\">The difference between call / apply / bind — Ivan Sifrim</a></li>\n<li><a href=\"https://dev.to/ritik_dev_js/what-the-hack-is-call-apply-bind-in-javascript-11ce\" rel=\"nofollow\">What the hack is call, apply, bind in JavaScript — Ritik</a></li>\n<li><a href=\"https://thenewstack.io/mastering-javascript-callbacks-bind-apply-call/\" rel=\"nofollow\">Mastering 'this' in JavaScript: Callbacks and bind(), apply(), call() — Michelle Gienow</a></li>\n<li><a href=\"https://dev.to/kbk0125/javascripts-apply-call-and-bind-explained-by-hosting-a-cookout-32jo\" rel=\"nofollow\">JavaScript’s apply, call, and bind explained by hosting a cookout — Kevin Kononenko</a></li>\n<li><a href=\"https://www.eigenx.com/blog/https/mediumcom/eigen-x/how-and-when-to-use-bind-call-and-apply-in-javascript-77b6f42898fb\" rel=\"nofollow\">How AND When to use bind, call, and apply in Javascript — Eigen X</a></li>\n<li><a href=\"https://dev.to/ycmjason/let-me-explain-to-you-what-is-this-javascript-44ja\" rel=\"nofollow\">Let me explain to you what is <code>this</code>. (Javascript) — Jason Yu</a></li>\n<li><a href=\"https://medium.com/quick-code/understanding-the-this-keyword-in-javascript-cb76d4c7c5e8\" rel=\"nofollow\">Understanding the “this” Keyword in JavaScript — Pavan</a></li>\n<li><a href=\"https://medium.freecodecamp.org/how-to-understand-the-keyword-this-and-context-in-javascript-cd624c6b74b8\" rel=\"nofollow\">How to understand the keyword this and context in JavaScript — Lukas Gisder-Dubé</a></li>\n<li><a href=\"https://dev.to/_hridaysharma/what-the-heck-is-this-in-javascript-37n1\" rel=\"nofollow\">What the heck is this in Javascript? — Hridayesh Sharma</a></li>\n<li><a href=\"https://dev.to/steelvoltage/this-and-bind-in-javascript-2pam\" rel=\"nofollow\">This and Bind In Javascript — Brian Barbour</a></li>\n<li><a href=\"https://dev.to/canderson93/3-techniques-for-maintaining-your-sanity-using-this-in-javascript-3idf\" rel=\"nofollow\">3 Techniques for Maintaining Your Sanity Using \"This\" in JavaScript — Carl</a></li>\n<li><a href=\"https://dev.to/aakashsr/mastering-the-javascript-this-keyword-4pfa\" rel=\"nofollow\">Mastering the JavaScript \"this\" Keyword — Aakash Srivastav</a></li>\n<li><a href=\"https://dev.to/sargalias/this-binding-in-javascript-4-new-binding-2p1n\" rel=\"nofollow\">This binding in JavaScript – 4. New binding — Spyros Argalias</a></li>\n<li><a href=\"https://dev.to/thatgalnatalie/a-quick-intro-to-this-in-javascript-2mhp\" rel=\"nofollow\">A quick intro to 'this' in JavaScript — Natalie Smith</a></li>\n<li><a href=\"https://dev.to/developerkaren/a-conversation-with-the-this-keyword-in-javascript-3j6g\" rel=\"nofollow\">A conversation with the 'this' keyword in Javascript — Karen Efereyan</a></li>\n<li><a href=\"https://jscurious.com/what-are-call-apply-and-bind-in-javascript/\" rel=\"nofollow\">What are call(), apply() and bind() in JavaScript — Amitav Mishra</a></li>\n<li><a href=\"https://yasemincidem.medium.com/understanding-this-binding-in-javascript-86687397c76d\" rel=\"nofollow\">Understanding 'this' binding in JavaScript — Yasemin Cidem</a></li>\n<li><a href=\"https://dmitripavlutin.com/javascript-this-interview-questions/\" rel=\"nofollow\">Top 7 tricky questions of 'this' keyword</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-14\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-14\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=c0mLRpw-9rI\" rel=\"nofollow\">JavaScript call, apply and bind — techsith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=AYVYxezrMWA\" rel=\"nofollow\">JavaScript Practical Applications of Call, Apply and Bind functions— techsith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Uy0NOXLBraE\" rel=\"nofollow\">JavaScript (call, bind, apply) — curious aatma</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=AOSYY1_np_4\" rel=\"nofollow\">Understanding Functions and 'this' In The World of ES2017 — Bryan Hughes</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=GhbhD1HR5vk\" rel=\"nofollow\">bind and this - Object Creation in JavaScript - FunFunFunction</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=uBdH0iB1VDM\" rel=\"nofollow\">JS Function Methods call(), apply(), and bind() — Steve Griffith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=75W8UPQ5l7k\" rel=\"nofollow\">call, apply and bind method in JavaScript — Akshay Saini</a></li>\n<li>.[Javascript Interview Questions ( Call, Bind and Apply ) - Polyfills, Output Based, Explicit Binding - Roadside Coder] (<a href=\"https://youtu.be/VkmUOktYDAU?si=SdvLZ8FBmephPxjS\" rel=\"nofollow\">https://youtu.be/VkmUOktYDAU?si=SdvLZ8FBmephPxjS</a>)</li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">16. new, Constructor, instanceof and Instances</h2><a id=\"user-content-16-new-constructor-instanceof-and-instances\" class=\"anchor\" aria-label=\"Permalink: 16. new, Constructor, instanceof and Instances\" href=\"#16-new-constructor-instanceof-and-instances\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-15\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-15\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://codeburst.io/javascript-for-beginners-the-new-operator-cee35beb669e\" rel=\"nofollow\">JavaScript For Beginners: the ‘new’ operator — Brandon Morelli</a></li>\n<li><a href=\"https://medium.freecodecamp.org/demystifying-javascripts-new-keyword-874df126184c\" rel=\"nofollow\">Let’s demystify JavaScript’s ‘new’ keyword — Cynthia Lee</a></li>\n<li><a href=\"https://javascript.info/constructor-new\" rel=\"nofollow\">Constructor, operator \"new\" — JavaScript.Info</a></li>\n<li><a href=\"https://css-tricks.com/understanding-javascript-constructors/\" rel=\"nofollow\">Understanding JavaScript Constructors — Faraz Kelhini</a></li>\n<li><a href=\"https://openclassrooms.com/en/courses/3523231-learn-to-code-with-javascript/4379006-use-constructor-functions\" rel=\"nofollow\">Use Constructor Functions — Openclassrooms</a></li>\n<li><a href=\"http://2ality.com/2017/08/type-right.html\" rel=\"nofollow\">Beyond <code>typeof</code> and <code>instanceof</code>: simplifying dynamic type checks — Dr. Axel Rauschmayer</a></li>\n<li><a href=\"https://javascriptrefined.io/function-and-object-instances-of-each-other-1e1095d5faac\" rel=\"nofollow\">Function and Object, instances of each other — Kiro Risk</a></li>\n<li><a href=\"https://flexiple.com/javascript/instanceof-javascript\" rel=\"nofollow\">JavaScript instanceof operator</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">17. Prototype Inheritance and Prototype Chain</h2><a id=\"user-content-17-prototype-inheritance-and-prototype-chain\" class=\"anchor\" aria-label=\"Permalink: 17. Prototype Inheritance and Prototype Chain\" href=\"#17-prototype-inheritance-and-prototype-chain\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Reference</h3><a id=\"user-content-reference-4\" class=\"anchor\" aria-label=\"Permalink: Reference\" href=\"#reference-4\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain\" rel=\"nofollow\">Inheritance and the prototype chain — MDN</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-16\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-16\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://medium.com/@parsyval/javascript-prototype-vs-class-a7015d5473b\" rel=\"nofollow\">Javascript : Prototype vs Class — Valentin PARSY</a></li>\n<li><a href=\"https://mathiasbynens.be/notes/prototypes\" rel=\"nofollow\">JavaScript engine fundamentals: optimizing prototypes — Mathias Bynens</a></li>\n<li><a href=\"https://codeburst.io/javascript-prototype-cb29d82b8809\" rel=\"nofollow\">JavaScript Prototype — NC Patro</a></li>\n<li><a href=\"https://hackernoon.com/prototypes-in-javascript-5bba2990e04b\" rel=\"nofollow\">Prototypes in JavaScript — Rupesh Mishra</a></li>\n<li><a href=\"https://medium.freecodecamp.org/prototype-in-js-busted-5547ec68872\" rel=\"nofollow\">Prototype in JavaScript: it’s quirky, but here’s how it works — Pranav Jindal</a></li>\n<li><a href=\"https://hackernoon.com/understanding-javascript-prototype-and-inheritance-d55a9a23bde2\" rel=\"nofollow\">Understanding JavaScript: Prototype and Inheritance — Alexander Kondov</a></li>\n<li><a href=\"https://dev.to/_hridaysharma/understanding-classes-es5-and-prototypal-inheritance-in-javascript-n8d\" rel=\"nofollow\">Understanding Classes (ES5) and Prototypal Inheritance in JavaScript — Hridayesh Sharma</a></li>\n<li><a href=\"https://dev.to/varundey/prototype-proto-and-prototypal-inheritance-in-javascript-2inl\" rel=\"nofollow\">prototype, <strong>proto</strong> and Prototypal inheritance in JavaScript — Varun Dey</a></li>\n<li><a href=\"https://javascript.info/prototype-inheritance\" rel=\"nofollow\">Prototypal Inheritance — JavaScript.Info</a></li>\n<li><a href=\"https://www.digitalocean.com/community/tutorials/understanding-prototypes-and-inheritance-in-javascript\" rel=\"nofollow\">How To Work with Prototypes and Inheritance in JavaScript — Tania Rascia</a></li>\n<li><a href=\"https://codeburst.io/master-javascript-prototypes-inheritance-d0a9a5a75c4e\" rel=\"nofollow\">Master JavaScript Prototypes &amp; Inheritance — Arnav Aggarwal</a></li>\n<li><a href=\"https://medium.freecodecamp.org/understanding-prototypal-inheritance-in-javascript-with-css-93b2fcda75e4\" rel=\"nofollow\">JavaScript’s Prototypal Inheritance Explained Using CSS — Nash Vail</a></li>\n<li><a href=\"https://gist.github.com/derhuerst/a585c4916b1c361cc6f0\">Prototypal Inheritance in JavaScript — Jannis Redmann</a></li>\n<li><a href=\"https://scotch.io/tutorials/demystifying-es6-classes-and-prototypal-inheritance\" rel=\"nofollow\">Demystifying ES6 Classes And Prototypal Inheritance ― Neo Ighodaro</a></li>\n<li><a href=\"https://dev.to/danny/intro-to-prototypal-inheritance---js-9di\" rel=\"nofollow\">Intro To Prototypal Inheritance — Dharani Jayakanthan</a></li>\n<li><a href=\"https://dev.to/varche/let-s-build-prototypal-inheritance-in-js-56mm\" rel=\"nofollow\">Let’s Build Prototypal Inheritance in JS — var-che</a></li>\n<li><a href=\"https://dev.to/attacomsian/objects-prototypes-and-classes-in-javascript-3i9b\" rel=\"nofollow\">Objects, Prototypes and Classes in JavaScript — Atta</a></li>\n<li><a href=\"https://dev.to/ladybenko/the-magical-world-of-javascript-prototypes-1mhg\" rel=\"nofollow\">The magical world of JavaScript prototypes — Belén</a></li>\n<li><a href=\"https://dev.to/lawrence_eagles/understanding-prototypal-inheritance-in-javascript-4f31#chp-4\" rel=\"nofollow\">Understanding Prototypal Inheritance In JavaScript — Lawrence Eagles</a></li>\n<li><a href=\"https://dev.to/irenejpopova/objects-and-prototypes-in-javascript-2eie\" rel=\"nofollow\">Objects and Prototypes in JavaScript — Irena Popova</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-15\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-15\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=sOrtAjyk4lQ\" rel=\"nofollow\">Javascript Prototype Inheritance — Avelx</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=7oNWNlMrkpc\" rel=\"nofollow\">JavaScript Prototype Inheritance Explained pt. I — techsith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=uIlj6_z_wL8\" rel=\"nofollow\">JavaScript Prototype Inheritance Explained pt. II — techsith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=qMO-LTOrJaE\" rel=\"nofollow\">JavaScript Prototype Inheritance Explained — Kyle Robinson</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=G6l5CHl67HQ\" rel=\"nofollow\">Advanced Javascript - Prototypal Inheritance In 1 Minute</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=phwzuiJJPpQ\" rel=\"nofollow\">An Overview Of Classical Javascript Classes and Prototypal Inheritance — Pentacode</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=4jb4AYEyhRc\" rel=\"nofollow\">Object Oriented JavaScript - Prototype — The Net Ninja</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=2rkEbcptR64\" rel=\"nofollow\">Prototype in JavaScript — kudvenkat</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=oCwCcNvaXAQ\" rel=\"nofollow\">JavaScript Using Prototypes — O'Reilly</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=XskMWBXNbp0\" rel=\"nofollow\">A Beginner's Guide to Javascript's Prototype — Tyler Mcginnis</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=hS_WqkyUah8\" rel=\"nofollow\">Prototypes in Javascript - p5.js Tutorial — The Coding Train</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Books</h3><a id=\"user-content-books-3\" class=\"anchor\" aria-label=\"Permalink: Books\" href=\"#books-3\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/getify/You-Dont-Know-JS/tree/1st-ed\">You Don't Know JS, 1st Edition: this &amp; Object Prototypes — Kyle Simpson</a></li>\n<li><a href=\"https://www.google.com.pk/books/edition/The_Principles_of_Object_Oriented_JavaSc/rorlAwAAQBAJ?hl=en&amp;gbpv=1&amp;pg=PP1&amp;printsec=frontcover\" rel=\"nofollow\">The Principles of Object-Oriented JavaScript - Nicholas C. Zakas</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">18. Object.create and Object.assign</h2><a id=\"user-content-18-objectcreate-and-objectassign\" class=\"anchor\" aria-label=\"Permalink: 18. Object.create and Object.assign\" href=\"#18-objectcreate-and-objectassign\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Reference</h3><a id=\"user-content-reference-5\" class=\"anchor\" aria-label=\"Permalink: Reference\" href=\"#reference-5\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create\" rel=\"nofollow\">Object.create() — MDN</a></li>\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\" rel=\"nofollow\">Object.assign() — MDN</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-17\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-17\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://medium.com/@happymishra66/object-create-in-javascript-fa8674df6ed2\" rel=\"nofollow\">Object.create in JavaScript — Rupesh Mishra</a></li>\n<li><a href=\"https://www.htmlgoodies.com/beyond/javascript/object.create-the-new-way-to-create-objects-in-javascript.html\" rel=\"nofollow\">Object.create(): the New Way to Create Objects in JavaScript — Rob Gravelle</a></li>\n<li><a href=\"http://adripofjavascript.com/blog/drips/basic-inheritance-with-object-create.html\" rel=\"nofollow\">Basic Inheritance with Object.create — Joshua Clanton</a></li>\n<li><a href=\"https://www.geeksforgeeks.org/object-create-javascript/\" rel=\"nofollow\">Object.create() In JavaScript — GeeksforGeeks</a></li>\n<li><a href=\"https://medium.com/@jonathanvox01/understanding-the-difference-between-object-create-and-the-new-operator-b2a2f4749358\" rel=\"nofollow\">Understanding the difference between Object.create() and the new operator — Jonathan Voxland</a></li>\n<li><a href=\"https://www.sitepoint.com/javascript-object-creation-patterns-best-practises/\" rel=\"nofollow\">JavaScript Object Creation: Patterns and Best Practices — Jeff Mott</a></li>\n<li><a href=\"https://robiul.dev/javascript-hasownproperty-method\" rel=\"nofollow\">Javascript hasOwnProperty: A Powerful Property Checking tool</a></li>\n<li><a href=\"https://www.digitalocean.com/community/tutorials/js-dealing-with-objects\" rel=\"nofollow\">Dealing With Objects in JavaScript With Object.assign, Object.keys and hasOwnProperty</a></li>\n<li><a href=\"https://scotch.io/bar-talk/copying-objects-in-javascript\" rel=\"nofollow\">Copying Objects in JavaScript ― Orinami Olatunji</a></li>\n<li><a href=\"https://codeburst.io/javascript-object-assign-bc9696dcbb6e\" rel=\"nofollow\">JavaScript: Object.assign() — Thiago S. Adriano</a></li>\n<li><a href=\"https://flaviocopes.com/how-to-clone-javascript-object/\" rel=\"nofollow\">How to deep clone a JavaScript Object — Flavio Copes</a></li>\n<li><a href=\"https://dev.to/vzing/object-create-when-and-why-to-use-20m9\" rel=\"nofollow\">Object.create(): When and Why to Use — VZing</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-16\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-16\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=aw7NfYhR5rc\" rel=\"nofollow\">Object.assign() explained — Aaron Writes Code</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=9Ky4X6inpi4\" rel=\"nofollow\">Object.assign() Method — techsith</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">19. map, reduce, filter</h2><a id=\"user-content-19-map-reduce-filter\" class=\"anchor\" aria-label=\"Permalink: 19. map, reduce, filter\" href=\"#19-map-reduce-filter\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-18\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-18\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://medium.com/jsguru/javascript-functional-programming-map-filter-and-reduce-846ff9ba492d\" rel=\"nofollow\">JavaScript Functional Programming — map, filter and reduce — Bojan Gvozderac</a></li>\n<li><a href=\"https://medium.com/@joomiguelcunha/learn-map-filter-and-reduce-in-javascript-ea59009593c4\" rel=\"nofollow\">Learn map, filter and reduce in Javascript — João Miguel Cunha</a></li>\n<li><a href=\"https://danmartensen.svbtle.com/javascripts-map-reduce-and-filter\" rel=\"nofollow\">JavaScript’s Map, Reduce, and Filter — Dan Martensen</a></li>\n<li><a href=\"https://code.tutsplus.com/tutorials/how-to-use-map-filter-reduce-in-javascript--cms-26209\" rel=\"nofollow\">How to Use Map, Filter, &amp; Reduce in JavaScript — Peleke Sengstacke</a></li>\n<li><a href=\"https://codeburst.io/javascript-learn-to-chain-map-filter-and-reduce-acd2d0562cd4\" rel=\"nofollow\">JavaScript — Learn to Chain Map, Filter, and Reduce — Brandon Morelli</a></li>\n<li><a href=\"https://codeburst.io/write-beautiful-javascript-with-%CE%BB-fp-es6-350cd64ab5bf\" rel=\"nofollow\">Javascript data structure with map, reduce, filter and ES6 — Deepak Gupta</a></li>\n<li><a href=\"https://hackernoon.com/understanding-map-filter-and-reduce-in-javascript-5df1c7eee464\" rel=\"nofollow\">Understanding map, filter and reduce in Javascript — Luuk Gruijs</a></li>\n<li><a href=\"https://hackernoon.com/functional-programming-in-js-map-filter-reduce-pt-5-308a205fdd5f\" rel=\"nofollow\">Functional Programming in JS: map, filter, reduce (Pt. 5) — Omer Goldberg</a></li>\n<li><a href=\"https://wsvincent.com/functional-javascript-map-filter-reduce/\" rel=\"nofollow\">JavaScript: Map, Filter, Reduce — William S. Vincent</a></li>\n<li><a href=\"https://www.sitepoint.com/es6-arrow-functions-new-fat-concise-syntax-javascript/\" rel=\"nofollow\">Arrow Functions: Fat and Concise Syntax in JavaScript — Kyle Pennell</a></li>\n<li><a href=\"https://codeburst.io/javascript-arrow-functions-for-beginners-926947fc0cdc\" rel=\"nofollow\">JavaScript: Arrow Functions for Beginners — Brandon Morelli</a></li>\n<li><a href=\"https://medium.freecodecamp.org/when-and-why-you-should-use-es6-arrow-functions-and-when-you-shouldnt-3d851d7f0b26\" rel=\"nofollow\">When (and why) you should use ES6 arrow functions — and when you shouldn’t — Cynthia Lee</a></li>\n<li><a href=\"https://codeburst.io/javascript-learn-understand-arrow-functions-fe2083533946\" rel=\"nofollow\">JavaScript — Learn &amp; Understand Arrow Functions — Brandon Morelli</a></li>\n<li><a href=\"https://medium.com/podiihq/javascript-arrow-functions-27d4c3334b83\" rel=\"nofollow\">(JavaScript )=&gt; Arrow functions — sigu</a></li>\n<li><a href=\"https://medium.com/@panderson.dev/javascript-reduce-79aab078da23\" rel=\"nofollow\">Javascript.reduce() — Paul Anderson</a></li>\n<li><a href=\"https://gofore.com/en/why-you-should-replace-foreach/\" rel=\"nofollow\">Why you should replace forEach with map and filter in JavaScript — Roope Hakulinen</a></li>\n<li><a href=\"https://medium.com/poka-techblog/simplify-your-javascript-use-map-reduce-and-filter-bd02c593cc2d\" rel=\"nofollow\">Simplify your JavaScript – Use .map(), .reduce(), and .filter() — Etienne Talbot</a></li>\n<li><a href=\"https://blog.codeanalogies.com/2018/07/24/javascripts-reduce-method-explained-by-going-on-a-diet/\" rel=\"nofollow\">JavaScript’s Reduce Method Explained By Going On a Diet — Kevin Kononenko</a></li>\n<li><a href=\"https://medium.com/@amiratak88/difference-between-map-filter-and-reduce-in-javascript-822ff79d5160\" rel=\"nofollow\">Difference between map, filter and reduce in JavaScript — Amirata Khodaparast</a></li>\n<li><a href=\"https://hackernoon.com/map-filter-reduce-ebbed4be4201\" rel=\"nofollow\">Map⇄Filter⇄Reduce↻ — ashay mandwarya</a></li>\n<li><a href=\"https://medium.freecodecamp.org/finding-your-way-with-map-aecb8ca038f6\" rel=\"nofollow\">Finding Your Way With .map() — Brandon Wozniewicz</a></li>\n<li><a href=\"https://medium.freecodecamp.org/how-to-write-your-own-map-filter-and-reduce-functions-in-javascript-ab1e35679d26\" rel=\"nofollow\">How to write your own map, filter and reduce functions in JavaScript — Hemand Nair</a></li>\n<li><a href=\"https://www.freecodecamp.org/news/manipulating-arrays-in-javascript/\" rel=\"nofollow\">How to Manipulate Arrays in JavaScript — Bolaji Ayodeji</a></li>\n<li><a href=\"https://www.freecodecamp.org/news/15-useful-javascript-examples-of-map-reduce-and-filter-74cbbb5e0a1f\" rel=\"nofollow\">How to simplify your codebase with map(), reduce(), and filter() in JavaScript — Alex Permyakov</a></li>\n<li><a href=\"https://dev.to/pickleat/map-filter-and-reduce-2efb\" rel=\"nofollow\">.map(), .filter(), and .reduce() — Andy Pickle</a></li>\n<li><a href=\"https://dev.to/chrisachard/map-filter-reduce-crash-course-5gan\" rel=\"nofollow\">Map/Filter/Reduce Crash Course — Chris Achard</a></li>\n<li><a href=\"https://medium.com/@js_tut/map-filter-and-reduce-animated-7fe391a35a47\" rel=\"nofollow\">Map, Filter and Reduce – Animated — JavaScript Teacher</a></li>\n<li><a href=\"https://dev.to/uptheirons78/map-filter-reduce-and-others-arrays-iterators-you-must-know-to-become-an-algorithms-wizard-4209\" rel=\"nofollow\">Map, Filter, Reduce and others Arrays Iterators You Must Know to Become an Algorithms Wizard — Mauro Bono</a></li>\n<li><a href=\"https://betterprogramming.pub/how-to-javascripts-map-vs-filter-vs-reduce-80d87a5a0a24\" rel=\"nofollow\">How to Use JavaScript’s .map, .filter, and .reduce — Avery Duffin</a></li>\n<li><a href=\"https://towardsdatascience.com/javascript-performance-test-for-vs-for-each-vs-map-reduce-filter-find-32c1113f19d7\" rel=\"nofollow\">Javascript performance test - for vs for each vs (map, reduce, filter, find) — Deepak Gupta</a></li>\n<li><a href=\"https://medium.com/javascript-in-plain-english/using-map-filter-and-reduce-properly-50e07f80c8b2\" rel=\"nofollow\">Using .map(), .filter() and .reduce() properly — Sasanka Kudagoda</a></li>\n<li><a href=\"https://dev.to/sanderdebr/mastering-the-javascript-reduce-method-2foj\" rel=\"nofollow\">Mastering the JavaScript Reduce method ✂️ — sanderdebr</a></li>\n<li><a href=\"https://www.freecodecamp.org/news/javascript-map-how-to-use-the-js-map-function-array-method/\" rel=\"nofollow\">JavaScript Map – How to Use the JS .map() Function (Array Method) — FreeCodeCamp</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-17\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-17\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=UXiYii0Y7Nw\" rel=\"nofollow\">Map, Filter and Reduce — Lydia Hallie</a></li>\n<li><a href=\"https://youtu.be/zdp0zrpKzIE?si=6QusFzD6tmwn-el4\" rel=\"nofollow\">Map, Filter and Reduce - Akshaay Saini</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=vytzLlY_wmU\" rel=\"nofollow\">Functional JavaScript: Map, forEach, Reduce, Filter — Theodore Anderson</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=qTeeVd8hOFY\" rel=\"nofollow\">JavaScript Array superpowers: Map, Filter, Reduce (part I) — Michael Rosata</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=gIm9xLYudL0\" rel=\"nofollow\">JavaScript Array superpowers: Map, Filter, Reduce (part 2) — Michael Rosata</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=zYBeEPxNSbw\" rel=\"nofollow\">JavaScript Higher Order Functions - Filter, Map, Sort &amp; Reduce — Epicop</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=4qWlqD0yYTU\" rel=\"nofollow\">[Array Methods 2/3] .filter + .map + .reduce — CodeWithNick</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=6sQDTgOqh-I\" rel=\"nofollow\">Arrow functions in JavaScript - What, Why and How — Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=e-5obm1G_FY&amp;t=1521s\" rel=\"nofollow\">Learning Functional Programming with JavaScript — Anjana Vakil - JSUnconf</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=bCqtb-Z5YGQ&amp;t=17s\" rel=\"nofollow\">Map - Parte 2 JavaScript - Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Wl98eZpkp-c\" rel=\"nofollow\">Reduce basics - Part 3 of FP in JavaScript - Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=1DMolJ2FrNY&amp;t=621s\" rel=\"nofollow\">Reduce Advanced - Part 4 of FP in JavaScript - Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=IXp06KekEjM\" rel=\"nofollow\">reduce Array Method | JavaScript Tutorial - Florin Pop</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=P4RAFdZDn3M\" rel=\"nofollow\">map Array Method | JavaScript Tutorial - Florin Pop</a></li>\n<li><a href=\"https://youtu.be/Ah7-PPjQ5Ls\" rel=\"nofollow\">Different array methods in 1 minute | Midudev (Spanish)</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">20. Pure Functions, Side Effects, State Mutation and Event Propagation</h2><a id=\"user-content-20-pure-functions-side-effects-state-mutation-and-event-propagation\" class=\"anchor\" aria-label=\"Permalink: 20. Pure Functions, Side Effects, State Mutation and Event Propagation\" href=\"#20-pure-functions-side-effects-state-mutation-and-event-propagation\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-19\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-19\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://hackernoon.com/javascript-and-functional-programming-pt-3-pure-functions-d572bb52e21c\" rel=\"nofollow\">Javascript and Functional Programming — Pure Functions — Omer Goldberg</a></li>\n<li><a href=\"https://medium.com/javascript-scene/master-the-javascript-interview-what-is-a-pure-function-d1c076bec976\" rel=\"nofollow\">Master the JavaScript Interview: What is a Pure Function? — Eric Elliott</a></li>\n<li><a href=\"https://medium.com/@jamesjefferyuk/javascript-what-are-pure-functions-4d4d5392d49c\" rel=\"nofollow\">JavaScript: What Are Pure Functions And Why Use Them? — James Jeffery</a></li>\n<li><a href=\"http://www.nicoespeon.com/en/2015/01/pure-functions-javascript/\" rel=\"nofollow\">Pure functions in JavaScript — @nicoespeon</a></li>\n<li><a href=\"https://www.sitepoint.com/functional-programming-pure-functions/\" rel=\"nofollow\">Functional Programming: Pure Functions — Arne Brasseur</a></li>\n<li><a href=\"https://alistapart.com/article/making-your-javascript-pure\" rel=\"nofollow\">Making your JavaScript Pure — Jack Franklin</a></li>\n<li><a href=\"https://medium.com/@fknussel/arrays-objects-and-mutations-6b23348b54aa\" rel=\"nofollow\">Arrays, Objects and Mutations — Federico Knüssel</a></li>\n<li><a href=\"https://medium.com/dailyjs/the-state-of-immutability-169d2cd11310\" rel=\"nofollow\">The State of Immutability — Maciej Sikora</a></li>\n<li><a href=\"https://medium.com/zurvin/hablemos-de-inmutabilidad-3dc65d290783\" rel=\"nofollow\">Hablemos de Inmutabilidad — Kike Sanchez</a></li>\n<li><a href=\"https://jrsinclair.com/articles/2018/how-to-deal-with-dirty-side-effects-in-your-pure-functional-javascript/\" rel=\"nofollow\">How to deal with dirty side effects in your pure functional JavaScript — James Sinclair</a></li>\n<li><a href=\"https://davidwalsh.name/preventing-sideeffects-javascript\" rel=\"nofollow\">Preventing Side Effects in JavaScript — David Walsh</a></li>\n<li><a href=\"https://wsvincent.com/javascript-pure-functions/\" rel=\"nofollow\">JavaScript: Pure Functions — William S. Vincent</a></li>\n<li><a href=\"https://hackernoon.com/functional-programming-paradigms-in-modern-javascript-pure-functions-797d9abbee1\" rel=\"nofollow\">Functional programming paradigms in modern JavaScript: Pure functions — Alexander Kondov</a></li>\n<li><a href=\"https://blog.bitsrc.io/understanding-javascript-mutation-and-pure-functions-7231cc2180d3\" rel=\"nofollow\">Understanding Javascript Mutation and Pure Functions — Chidume Nnamdi</a></li>\n<li><a href=\"https://medium.com/@bluepnume/functional-ish-javascript-205c05d0ed08\" rel=\"nofollow\">Functional-ish JavaScript — Daniel Brain</a></li>\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events\" rel=\"nofollow\">Event Propagation — MDN</a></li>\n<li><a href=\"https://javascript.info/bubbling-and-capturing\" rel=\"nofollow\">Event Propagation — Bubbling and capturing</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-18\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-18\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=dZ41D6LDSBg\" rel=\"nofollow\">Pure Functions — Hexlet</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Jh_Uzqzz_wM\" rel=\"nofollow\">Pure Functions - Functional Programming in JavaScript — Paul McBride</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=frT3H-eBmPc\" rel=\"nofollow\">JavaScript Pure Functions — Seth Alexander</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=AHbRVJzpB54\" rel=\"nofollow\">JavaScript Pure vs Impure Functions Explained — Theodore Anderson</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=BMUiFMZr7vk\" rel=\"nofollow\">Pure Functions - Programação Funcional: Parte 1 - Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=JYc7gr9Ehl0\" rel=\"nofollow\">Event Propagation - JavaScript Event Bubbling and Propagation - Steve Griffith</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">21. Closures</h2><a id=\"user-content-21-closures\" class=\"anchor\" aria-label=\"Permalink: 21. Closures\" href=\"#21-closures\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Reference</h3><a id=\"user-content-reference-6\" class=\"anchor\" aria-label=\"Permalink: Reference\" href=\"#reference-6\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures\" rel=\"nofollow\">Closures — MDN</a></li>\n<li><a href=\"https://javascript.info/closure\" rel=\"nofollow\">Closure — JavaScript.Info</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-20\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-20\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://medium.com/dailyjs/i-never-understood-javascript-closures-9663703368e8\" rel=\"nofollow\">I never understood JavaScript closures — Olivier De Meulder</a></li>\n<li><a href=\"http://javascriptissexy.com/understand-javascript-closures-with-ease/\" rel=\"nofollow\">Understand JavaScript Closures With Ease — Richard Bovell</a></li>\n<li><a href=\"https://codeburst.io/understanding-javascript-closures-da6aab330302\" rel=\"nofollow\">Understanding JavaScript Closures — Codesmith</a></li>\n<li><a href=\"https://codeburst.io/understand-closures-in-javascript-d07852fa51e7\" rel=\"nofollow\">Understand Closures in JavaScript — Brandon Morelli</a></li>\n<li><a href=\"https://medium.freecodecamp.org/javascript-closures-simplified-d0d23fa06ba4\" rel=\"nofollow\">A simple guide to help you understand closures in JavaScript — Prashant Ram</a></li>\n<li><a href=\"https://scotch.io/tutorials/understanding-javascript-closures-a-practical-approach\" rel=\"nofollow\">Understanding JavaScript Closures: A Practical Approach — Paul Upendo</a></li>\n<li><a href=\"https://hackernoon.com/understanding-javascript-closures-4188edf5ea1b\" rel=\"nofollow\">Understanding JavaScript: Closures — Alexander Kondov</a></li>\n<li><a href=\"https://hackernoon.com/how-to-use-javascript-closures-with-confidence-85cd1f841a6b\" rel=\"nofollow\">How to use JavaScript closures with confidence — Léna Faure</a></li>\n<li><a href=\"https://howchoo.com/g/mge2mji2mtq/javascript-closures-by-example\" rel=\"nofollow\">JavaScript closures by example — tyler</a></li>\n<li><a href=\"https://codeburst.io/javascript-closures-and-scope-3784c75b9290\" rel=\"nofollow\">JavaScript — Closures and Scope — Alex Aitken</a></li>\n<li><a href=\"https://medium.freecodecamp.org/discover-the-power-of-closures-in-javascript-5c472a7765d7\" rel=\"nofollow\">Discover the power of closures in JavaScript — Cristi Salcescu</a></li>\n<li><a href=\"http://reallifejs.com/the-meat/getting-closure/\" rel=\"nofollow\">Getting Closure — RealLifeJS</a></li>\n<li><a href=\"https://dev.to/ritik_dev_js/what-the-hack-is-closure-currying-and-iife-in-javascript-32m9\" rel=\"nofollow\">Closure, Currying and IIFE in JavaScript — Ritik</a></li>\n<li><a href=\"https://blog.bitsrc.io/a-beginners-guide-to-closures-in-javascript-97d372284dda\" rel=\"nofollow\">Understanding Closures in JavaScript — Sukhjinder Arora</a></li>\n<li><a href=\"https://medium.freecodecamp.org/a-basic-guide-to-closures-in-javascript-9fc8b7e3463e\" rel=\"nofollow\">A basic guide to Closures in JavaScript — Parathan Thiyagalingam</a></li>\n<li><a href=\"https://dev.to/steelvoltage/closures-using-memoization-3597\" rel=\"nofollow\">Closures: Using Memoization — Brian Barbour</a></li>\n<li><a href=\"https://betterprogramming.pub/a-brief-introduction-to-closures-and-lexical-scoping-in-javascript-8a5866496232\" rel=\"nofollow\">A Brief Introduction to Closures and Lexical Scoping in JavaScript — Ashutosh K Singh</a></li>\n<li><a href=\"https://dev.to/stereobooster/demystify-closures-5g42\" rel=\"nofollow\">Demystify Closures — stereobooster</a></li>\n<li><a href=\"https://dev.to/boywithsilverwings/scopes-and-closures-javascript-concepts-4dfj\" rel=\"nofollow\">Scopes and Closures - JavaScript Concepts — Agney Menon</a></li>\n<li><a href=\"https://dev.to/mattpopovich/understanding-closures-in-javascript-3k0d\" rel=\"nofollow\">Understanding Closures in JavaScript — Matt Popovich</a></li>\n<li><a href=\"https://whatthefuck.is/closure\" rel=\"nofollow\">whatthefuck.is · A Closure - Dan Abramov</a></li>\n<li><a href=\"https://dev.to/brandonleboeuf/closure-in-javascript-49n7\" rel=\"nofollow\">Closures in JavaScript can... - Brandon LeBoeuf</a></li>\n<li><a href=\"https://dev.to/this_mkhy/do-you-know-es6-part-3-advanced-3fcl#Closures-2\" rel=\"nofollow\">Do you know Closures - Mohamed Khaled</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-19\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-19\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=XTAzsODSCsM\" rel=\"nofollow\">JavaScript The Hard Parts: Closure, Scope &amp; Execution Context - Codesmith</a></li>\n<li><a href=\"https://youtu.be/qikxEIxsXco?si=fGFgUHuaOW49Wg9p\" rel=\"nofollow\">Namaste Javascript by Akshay Saini</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=71AtaJpJHw0\" rel=\"nofollow\">Javascript Closure — techsith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=CQqwU2Ixu-U\" rel=\"nofollow\">Closures — Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=-xqJo5VRP4A\" rel=\"nofollow\">Closures in JavaScript — techsith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=yiEeiMN2Khs\" rel=\"nofollow\">JavaScript Closures 101: What is a closure? — JavaScript Tutorials</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=1JsJx1x35c0\" rel=\"nofollow\">Closures — freeCodeCamp</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=-rLrGAXK8WE\" rel=\"nofollow\">JavaScript Closures — CodeWorkr</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=qikxEIxsXco\" rel=\"nofollow\">Closures in JS - Akshay Saini</a></li>\n<li><a href=\"https://youtu.be/xa8lhVwQBw4\" rel=\"nofollow\">CLOSURES en JavaScript: Qué son y cómo funcionan - Carlos Azaustre</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=3a0I8ICR1Vg\" rel=\"nofollow\">Learn Closures In 7 Minutes - Web Dev Simplified</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">22. High Order Functions</h2><a id=\"user-content-22-high-order-functions\" class=\"anchor\" aria-label=\"Permalink: 22. High Order Functions\" href=\"#22-high-order-functions\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Books</h3><a id=\"user-content-books-4\" class=\"anchor\" aria-label=\"Permalink: Books\" href=\"#books-4\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://eloquentjavascript.net/05_higher_order.html\" rel=\"nofollow\">Eloquent JavaScript, 3rd Edition: Ch. 5 - Higher-order Functions</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-21\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-21\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.sitepoint.com/higher-order-functions-javascript/\" rel=\"nofollow\">Higher-Order Functions in JavaScript — M. David Green</a></li>\n<li><a href=\"https://medium.freecodecamp.org/higher-order-functions-in-javascript-d9101f9cf528\" rel=\"nofollow\">Higher Order Functions: Using Filter, Map and Reduce for More Maintainable Code — Guido Schmitz</a></li>\n<li><a href=\"https://hackernoon.com/effective-functional-javascript-first-class-and-higher-order-functions-713fde8df50a\" rel=\"nofollow\">First-class and Higher Order Functions: Effective Functional JavaScript — Hugo Di Francesco</a></li>\n<li><a href=\"https://www.lullabot.com/articles/higher-order-functions-in-javascript\" rel=\"nofollow\">Higher Order Functions in JavaScript — John Hannah</a></li>\n<li><a href=\"https://github.com/pedroapfilho/high-order-functions\">Just a reminder on how to use high order functions — Pedro Filho</a></li>\n<li><a href=\"https://blog.bitsrc.io/understanding-higher-order-functions-in-javascript-75461803bad\" rel=\"nofollow\">Understanding Higher-Order Functions in JavaScript — Sukhjinder Arora</a></li>\n<li><a href=\"https://dev.to/nuel_ikwuoma/higher-order-functions-a-pragmatic-approach-51fb\" rel=\"nofollow\">Higher Order Functions - A pragmatic approach — emmanuel ikwuoma</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-20\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-20\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=rRgD1yVwIvE\" rel=\"nofollow\">JavaScript Higher Order Functions &amp; Arrays — Traversy Media</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=BMUiFMZr7vk\" rel=\"nofollow\">Higher Order Functions — Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=dTlpYnmBW9I\" rel=\"nofollow\">Higher Order Functions in Javascript — Raja Yogan</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=GYRMNp1SKXA\" rel=\"nofollow\">Higher Order Iterators in JavaScript — Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=H4awPsyugS0\" rel=\"nofollow\">Higher Order Functions in JavaScript — The Coding Train</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=7E8ctomPQJw\" rel=\"nofollow\">Part 1: An Introduction to Callbacks and Higher Order Functions - Codesmith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=28MXziDZkE4\" rel=\"nofollow\">Part 2: Understanding Why We Need Higher Order Functions - Codesmith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=HkWxvB1RJq0\" rel=\"nofollow\">Higher-Order Functions ft. Functional Programming - Akshay Saini</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">23. Recursion</h2><a id=\"user-content-23-recursion\" class=\"anchor\" aria-label=\"Permalink: 23. Recursion\" href=\"#23-recursion\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-22\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-22\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://medium.freecodecamp.org/recursion-in-javascript-1608032c7a1f\" rel=\"nofollow\">Recursion in JavaScript — Kevin Ennis</a></li>\n<li><a href=\"https://medium.com/@zfrisch/understanding-recursion-in-javascript-992e96449e03\" rel=\"nofollow\">Understanding Recursion in JavaScript — Zak Frisch</a></li>\n<li><a href=\"https://codeburst.io/learn-and-understand-recursion-in-javascript-b588218e87ea\" rel=\"nofollow\">Learn and Understand Recursion in JavaScript — Brandon Morelli</a></li>\n<li><a href=\"https://www.sitepoint.com/recursion-functional-javascript/\" rel=\"nofollow\">Recursion in Functional JavaScript — M. David Green</a></li>\n<li><a href=\"https://hackernoon.com/programming-with-js-recursion-31371e2bf808\" rel=\"nofollow\">Programming with JS: Recursion — Alexander Kondov</a></li>\n<li><a href=\"https://dev.to/simov/anonymous-recursion-in-javascript\" rel=\"nofollow\">Anonymous Recursion in JavaScript — simo</a></li>\n<li><a href=\"http://www.jstips.co/en/javascript/recursion-iteration-and-tail-calls-in-js/\" rel=\"nofollow\">Recursion, iteration and tail calls in JS — loverajoel</a></li>\n<li><a href=\"https://www.freecodecamp.org/news/what-is-recursion-in-javascript/\" rel=\"nofollow\">What is Recursion? A Recursive Function Explained with JavaScript Code Examples — Nathan Sebhastian</a></li>\n<li><a href=\"https://medium.com/@newmanbradm/intro-to-recursion-984a8bd50f4b\" rel=\"nofollow\">Intro to Recursion — Brad Newman</a></li>\n<li><a href=\"https://medium.datadriveninvestor.com/accio-recursion-your-new-favorite-javascript-spell-7e10d3125fb3\" rel=\"nofollow\">Accio Recursion!: Your New Favorite JavaScript Spell — Leanne Cabey</a></li>\n<li><a href=\"https://dev.to/christinamcmahon/recursion-explained-with-examples-4k1m\" rel=\"nofollow\">Recursion Explained (with Examples) — Christina</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-21\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-21\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=VtG0WAUvq2w\" rel=\"nofollow\">Recursion In JavaScript — techsith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=k7-N8R0-KY4\" rel=\"nofollow\">Recursion — Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=vLhHyGTkjCs\" rel=\"nofollow\">Recursion and Recursive Functions — Hexlet</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=kGXVsd8pBLw\" rel=\"nofollow\">Recursion: Recursion() — JS Monthly — Lucas da Costa</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=uyjsR9eNTIw\" rel=\"nofollow\">Recursive Function in JavaScript — kudvenkat</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Mv9NEXX1VHc\" rel=\"nofollow\">What on Earth is Recursion? — Computerphile</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=9NO5dXSlbv8\" rel=\"nofollow\">Javascript Tutorial 34: Introduction To Recursion — codedamn</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=FmiQr4nfoPQ\" rel=\"nofollow\">Recursion, Iteration, and JavaScript: A Love Story | JSHeroes 2018 — Anjana Vakil</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=lMBVwYrmFZQ&amp;ab_channel=ColtSteele\" rel=\"nofollow\">Recursion crash course - Colt Steele</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=6oDQaB2one8\" rel=\"nofollow\">What Is Recursion - In Depth - Web Dev Simplified</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">24. Collections and Generators</h2><a id=\"user-content-24-collections-and-generators\" class=\"anchor\" aria-label=\"Permalink: 24. Collections and Generators\" href=\"#24-collections-and-generators\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Reference</h3><a id=\"user-content-reference-7\" class=\"anchor\" aria-label=\"Permalink: Reference\" href=\"#reference-7\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator\" rel=\"nofollow\">Generator — MDN web docs</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-23\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-23\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://hacks.mozilla.org/2015/06/es6-in-depth-collections/\" rel=\"nofollow\">ES6 In Depth: Collections — Jason Orendorff</a></li>\n<li><a href=\"https://www.sitepoint.com/es6-collections-map-set-weakmap-weakset/\" rel=\"nofollow\">ES6 Collections: Using Map, Set, WeakMap, WeakSet — Kyle Pennell</a></li>\n<li><a href=\"https://ponyfoo.com/articles/es6-weakmaps-sets-and-weaksets-in-depth\" rel=\"nofollow\">ES6 WeakMaps, Sets, and WeakSets in Depth — Nicolás Bevacqua</a></li>\n<li><a href=\"https://javascript.info/map-set-weakmap-weakset\" rel=\"nofollow\">Map, Set, WeakMap and WeakSet — JavaScript.Info</a></li>\n<li><a href=\"https://dev.to/mildrenben/maps-in-es6---a-quick-guide-35pk\" rel=\"nofollow\">Maps in ES6 - A Quick Guide — Ben Mildren</a></li>\n<li><a href=\"https://medium.com/front-end-hacking/es6-set-vs-array-what-and-when-efc055655e1a\" rel=\"nofollow\">ES6 — Set vs Array — What and when? — Maya Shavin</a></li>\n<li><a href=\"https://medium.com/front-end-hacking/es6-map-vs-object-what-and-when-b80621932373\" rel=\"nofollow\">ES6 — Map vs Object — What and when? — Maya Shavin</a></li>\n<li><a href=\"https://codeburst.io/array-vs-set-vs-map-vs-object-real-time-use-cases-in-javascript-es6-47ee3295329b\" rel=\"nofollow\">Array vs Set vs Map vs Object — Real-time use cases in Javascript (ES6/ES7) — Rajesh Babu</a></li>\n<li><a href=\"https://dev.to/claireparker/how-to-create-an-array-of-unique-values-in-javascript-using-sets-5dg6\" rel=\"nofollow\">How to create an array of unique values in JavaScript using Sets — Claire Parker-Jones</a></li>\n<li><a href=\"https://hackernoon.com/what-you-should-know-about-es6-maps-dc66af6b9a1e\" rel=\"nofollow\">What You Should Know About ES6 Maps — Just Chris</a></li>\n<li><a href=\"https://ponyfoo.com/articles/es6-maps-in-depth\" rel=\"nofollow\">ES6 Maps in Depth — Nicolás Bevacqua</a></li>\n<li><a href=\"https://codeburst.io/what-are-javascript-generators-and-how-to-use-them-c6f2713fd12e\" rel=\"nofollow\">What are JavaScript Generators and how to use them — Vladislav Stepanov</a></li>\n<li><a href=\"https://codeburst.io/understanding-generators-in-es6-javascript-with-examples-6728834016d5\" rel=\"nofollow\">Understanding JavaScript Generators With Examples — Arfat Salman</a></li>\n<li><a href=\"https://davidwalsh.name/es6-generators\" rel=\"nofollow\">The Basics of ES6 Generators — Kyle Simpson</a></li>\n<li><a href=\"https://dev.to/kallaugher/an-introduction-to-javascript-generators-1224\" rel=\"nofollow\">An Introduction to JavaScript Generators — Alice Kallaugher</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-22\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-22\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=ycohYSx5h9w\" rel=\"nofollow\">JavaScript ES6 / ES2015 Set, Map, WeakSet and WeakMap — Traversy Media</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=dcP039DYzmE\" rel=\"nofollow\">JavaScript ES6 / ES2015 - [11] Generators - Traversy Media</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=m4abICrldQI\" rel=\"nofollow\">The Differences between ES6 Maps and Sets — Steve Griffith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=QO07THdLWQo\" rel=\"nofollow\">Javascript Generators - THEY CHANGE EVERYTHING - ES6 Generators Harmony Generators — LearnCode.academy</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">25. Promises</h2><a id=\"user-content-25-promises\" class=\"anchor\" aria-label=\"Permalink: 25. Promises\" href=\"#25-promises\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Reference</h3><a id=\"user-content-reference-8\" class=\"anchor\" aria-label=\"Permalink: Reference\" href=\"#reference-8\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise\" rel=\"nofollow\">Promise — MDN</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-24\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-24\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://scotch.io/tutorials/javascript-promises-for-dummies\" rel=\"nofollow\">JavaScript Promises for Dummies ― Jecelyn Yeen</a></li>\n<li><a href=\"https://hackernoon.com/understanding-promises-in-javascript-13d99df067c1\" rel=\"nofollow\">Understanding promises in JavaScript — Gokul N K</a></li>\n<li><a href=\"https://medium.com/javascript-scene/master-the-javascript-interview-what-is-a-promise-27fc71e77261\" rel=\"nofollow\">Master the JavaScript Interview: What is a Promise? — Eric Elliott</a></li>\n<li><a href=\"https://www.sitepoint.com/overview-javascript-promises/\" rel=\"nofollow\">An Overview of JavaScript Promises — Sandeep Panda</a></li>\n<li><a href=\"https://medium.freecodecamp.org/promises-in-javascript-explained-277b98850de\" rel=\"nofollow\">How to use Promises in JavaScript — Prashant Ram</a></li>\n<li><a href=\"https://medium.freecodecamp.org/how-to-implement-promises-in-javascript-1ce2680a7f51\" rel=\"nofollow\">Implementing Promises In JavaScript — Maciej Cieslar</a></li>\n<li><a href=\"https://codeburst.io/javascript-promises-explained-with-simple-real-life-analogies-dd6908092138\" rel=\"nofollow\">JavaScript: Promises explained with simple real life analogies — Shruti Kapoor</a></li>\n<li><a href=\"http://exploringjs.com/es6/ch_promises.html\" rel=\"nofollow\">Promises for Asynchronous Programming — Exploring JS</a></li>\n<li><a href=\"https://blog.codeanalogies.com/2018/08/26/javascript-promises-explained-by-gambling-at-a-casino/\" rel=\"nofollow\">JavaScript Promises Explained By Gambling At A Casino — Kevin Kononenko</a></li>\n<li><a href=\"https://medium.com/datafire-io/es6-promises-patterns-and-anti-patterns-bbb21a5d0918\" rel=\"nofollow\">ES6 Promises: Patterns and Anti-Patterns — Bobby Brennan</a></li>\n<li><a href=\"https://codeburst.io/a-simple-guide-to-es6-promises-d71bacd2e13a\" rel=\"nofollow\">A Simple Guide to ES6 Promises — Brandon Morelli</a></li>\n<li><a href=\"https://codeburst.io/the-es6-promises-87a979ab27e4\" rel=\"nofollow\">The ES6 Promises — Manoj Singh Negi</a></li>\n<li><a href=\"https://ponyfoo.com/articles/es6-promises-in-depth\" rel=\"nofollow\">ES6 Promises in Depth — Nicolás Bevacqua</a></li>\n<li><a href=\"https://codeburst.io/playing-with-javascript-promises-a-comprehensive-approach-25ab752c78c3\" rel=\"nofollow\">Playing with Javascript Promises: A Comprehensive Approach — Rajesh Babu</a></li>\n<li><a href=\"https://medium.freecodecamp.org/how-to-write-a-javascript-promise-4ed8d44292b8\" rel=\"nofollow\">How to Write a JavaScript Promise — Brandon Wozniewicz</a></li>\n<li><a href=\"https://medium.com/@andrewly07/a-coding-writers-guide-an-introduction-to-es6-promises-9ff9f9e88f6c\" rel=\"nofollow\">A Coding Writer’s Guide: An Introduction To ES6 Promises — Andrew Ly</a></li>\n<li><a href=\"https://dev.to/itnext/reverse-engineering-understand-promises-1jfc\" rel=\"nofollow\">Understanding Promises in JavaScript — Chris Noring</a></li>\n<li><a href=\"https://dev.to/zellwk/converting-callbacks-to-promises-nhn\" rel=\"nofollow\">Converting callbacks to promises — Zell Liew</a></li>\n<li><a href=\"https://medium.com/dailyjs/javascript-promises-zero-to-hero-plus-cheat-sheet-64d75051cffa\" rel=\"nofollow\">JavaScript Promises: Zero To Hero Plus Cheat Sheet — Joshua Saunders</a></li>\n<li><a href=\"https://dev.to/boywithsilverwings/promises-javascript-concepts-293c\" rel=\"nofollow\">Promises - JavaScript concepts — Agney Menon</a></li>\n<li><a href=\"https://dev.to/iggredible/javascript-promise-101-3idl\" rel=\"nofollow\">Javascript <code>Promise</code> 101 — Igor Irianto</a></li>\n<li><a href=\"https://dev.to/sunnysingh/simplify-javascript-promises-4djb\" rel=\"nofollow\">Simplify JavaScript Promises — Sunny Singh</a></li>\n<li><a href=\"https://medium.matcha.fyi/the-low-down-on-promises-af4a96bbb95f\" rel=\"nofollow\">The Lowdown on Promises — Aphinya Dechalert</a></li>\n<li><a href=\"https://dev.to/lydiahallie/javascript-visualized-promises-async-await-5gke\" rel=\"nofollow\">JavaScript Visualized: Promises &amp; Async/Await — Lydia Hallie</a></li>\n<li><a href=\"https://dev.to/peterklingelhofer/promises-in-javascript-3h5k\" rel=\"nofollow\">Promises in JavaScript — Peter Klingelhofer</a></li>\n<li><a href=\"https://dev.to/somedood/best-practices-for-es6-promises-36da\" rel=\"nofollow\">Best Practices for ES6 Promises — Basti Ortiz</a></li>\n<li><a href=\"https://medium.com/zurvin/lo-que-debemos-saber-de-escript-2020-5fc61da5e4cd\" rel=\"nofollow\">Lo que debemos saber de EScript 2020 — Kike Sanchez</a></li>\n<li><a href=\"https://javascript.info/promise-basics\" rel=\"nofollow\">Promise Basics - javascript.info</a></li>\n<li><a href=\"https://blog.webdevsimplified.com/2021-09/javascript-promises\" rel=\"nofollow\">The Complete JavaScript Promise Guide</a></li>\n<li><a href=\"https://javascript.info/promise-chaining\" rel=\"nofollow\">Promise Chaining - javascript.info</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-23\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-23\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=vQ3MoXnKfuQ\" rel=\"nofollow\">Let's Learn ES6 - Promises — Ryan Christiani</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=XJEHuBZQ5dU\" rel=\"nofollow\">JavaScript ES6 / ES2015 Promises — Traversy Media</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=2d7s3spWAzo\" rel=\"nofollow\">Promises — Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=f8IgdnYIwOU\" rel=\"nofollow\">Error Handling Promises in JavaScript — Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=QO4NXhWo_NM\" rel=\"nofollow\">Promises Part 1 - Topics of JavaScript/ES6 — The Coding Train</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=RvYYCGs45L4\" rel=\"nofollow\">JavaScript Promise in 100 Seconds</a></li>\n<li><a href=\"https://youtu.be/3NjdOtHpcBM\" rel=\"nofollow\">JavaScript Promise in 9 Minutes</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=DHvZLI7Db8E\" rel=\"nofollow\">JavaScript Promises In 10 Minutes — Web Dev Simplified </a></li>\n<li><a href=\"https://youtu.be/ap-6PPAuK1Y?si=Ri1fopXeYjlrHzpf\" rel=\"nofollow\">Promises | Ep 02 Season 02 - Namaste JavaScript - Akshay Saini </a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">26. async/await</h2><a id=\"user-content-26-asyncawait\" class=\"anchor\" aria-label=\"Permalink: 26. async/await\" href=\"#26-asyncawait\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Reference</h3><a id=\"user-content-reference-9\" class=\"anchor\" aria-label=\"Permalink: Reference\" href=\"#reference-9\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://javascript.info/async-await\" rel=\"nofollow\">async/await — JavaScript.Info</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Books</h3><a id=\"user-content-books-5\" class=\"anchor\" aria-label=\"Permalink: Books\" href=\"#books-5\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://eloquentjavascript.net/11_async.html\" rel=\"nofollow\">Eloquent JavaScript, 3rd Edition: Ch. 11 - Asynchronous Programming</a></li>\n<li><a href=\"http://exploringjs.com/es6/ch_async.html\" rel=\"nofollow\">Exploring JS: Asynchronous Programming</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-25\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-25\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://hackernoon.com/understanding-async-await-in-javascript-1d81bb079b2c\" rel=\"nofollow\">Understanding async/await in Javascript — Gokul N K</a></li>\n<li><a href=\"https://scotch.io/tutorials/asynchronous-javascript-using-async-await\" rel=\"nofollow\">Asynchronous Javascript using async/await — Joy Warugu</a></li>\n<li><a href=\"https://flaviocopes.com/javascript-async-await/\" rel=\"nofollow\">Modern Asynchronous JavaScript with async/await — Flavio Copes</a></li>\n<li><a href=\"https://www.toptal.com/javascript/asynchronous-javascript-async-await-tutorial\" rel=\"nofollow\">Asynchronous JavaScript: From Callback Hell to Async and Await — Demir Selmanovic</a></li>\n<li><a href=\"https://medium.com/@_bengarrison/javascript-es8-introducing-async-await-functions-7a471ec7de8a\" rel=\"nofollow\">Javascript — ES8 Introducing async/await Functions — Ben Garrison</a></li>\n<li><a href=\"https://medium.freecodecamp.org/avoiding-the-async-await-hell-c77a0fb71c4c\" rel=\"nofollow\">How to escape async/await hell — Aditya Agarwal</a></li>\n<li><a href=\"https://ponyfoo.com/articles/understanding-javascript-async-await\" rel=\"nofollow\">Understanding JavaScript’s async await — Nicolás Bevacqua</a></li>\n<li><a href=\"https://techbrij.com/javascript-async-await-parallel-sequence\" rel=\"nofollow\">JavaScript Async/Await: Serial, Parallel and Complex Flow — TechBrij</a></li>\n<li><a href=\"https://blog.pusher.com/promises-async-await/\" rel=\"nofollow\">From JavaScript Promises to Async/Await: why bother? — Chris Nwamba</a></li>\n<li><a href=\"https://www.sitepoint.com/flow-control-callbacks-promises-async-await/\" rel=\"nofollow\">Flow Control in Modern JS: Callbacks to Promises to Async/Await — Craig Buckler</a></li>\n<li><a href=\"https://medium.freecodecamp.org/improve-your-asynchronous-javascript-code-with-async-and-await-c02fc3813eda\" rel=\"nofollow\">How to improve your asynchronous Javascript code with async and await — Indrek Lasn</a></li>\n<li><a href=\"https://medium.com/@micksheridan.24/making-fetches-easy-with-async-await-8a1246efa1f6\" rel=\"nofollow\">Making Fetches Easy With Async Await — Mickey Sheridan</a></li>\n<li><a href=\"https://dev.to/gafi/7-reasons-to-always-use-async-await-over-plain-promises-tutorial-4ej9\" rel=\"nofollow\">7 Reasons Why JavaScript Async/Await Is Better Than Plain Promises — Mostafa Gaafar</a></li>\n<li><a href=\"https://dev.to/jscrambler/asynchronous-operations-in-javascript-2p6b\" rel=\"nofollow\">Asynchronous Operations in JavaScript — Jscrambler</a></li>\n<li><a href=\"https://medium.com/better-programming/should-i-use-promises-or-async-await-126ab5c98789\" rel=\"nofollow\">JavaScript: Promises or async-await — Gokul N K</a></li>\n<li><a href=\"https://dev.to/zhiyuanamos/async-await-from-zero-to-hero-a22\" rel=\"nofollow\">Async / Await: From Zero to Hero — Zhi Yuan</a></li>\n<li><a href=\"https://dev.to/lydiahallie/javascript-visualized-promises-async-await-5gke\" rel=\"nofollow\">JavaScript Visualized: Promises &amp; Async/Await — Lydia Hallie</a></li>\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await\" rel=\"nofollow\">Making asynchronous programming easier with async and await — MDN</a></li>\n<li><a href=\"https://www.freecodecamp.org/news/javascript-async-await-tutorial-learn-callbacks-promises-async-await-by-making-icecream/\" rel=\"nofollow\">JavaScript Async/Await Tutorial – Learn Callbacks, Promises, and Async/Await in JS by Making Ice Cream</a></li>\n<li><a href=\"https://blog.webdevsimplified.com/2021-11/async-await/\" rel=\"nofollow\">Better Than Promises - JavaScript Async/Await</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-24\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-24\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=exBgWAIeIeg\" rel=\"nofollow\">Asynchronous JavaScript Crash Course</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=9YkUCxvaLEk\" rel=\"nofollow\">Async + Await — Wes Bos</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=SrNQS8J67zc\" rel=\"nofollow\">Asynchrony: Under the Hood — Shelley Vohr</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=568g8hxJJp4&amp;index=3&amp;list=PL0zVEGEvSaeHJppaRLrqjeTPnCH6\" rel=\"nofollow\">async/await in JavaScript - What, Why and How — Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=XO77Fib9tSI&amp;index=3&amp;list=PLRqwX-V7Uu6bKLPQvPRNNE65kBL62mVfx\" rel=\"nofollow\">async/await Part 1 - Topics of JavaScript/ES8 — The Coding Train</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=chavThlNz3s&amp;index=4&amp;list=PLRqwX-V7Uu6bKLPQvPRNNE65kBL62mVfx\" rel=\"nofollow\">async/await Part 2 - Topics of JavaScript/ES8 — The Coding Train</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=krAYA4rvbdA\" rel=\"nofollow\">Complete Guide to JS Async &amp; Await ES2017/ES8 — Colt Steele</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=_9vgd9XKlDQ\" rel=\"nofollow\">Tips for using async/await in JavaScript — James Q Quick</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=V_Kr9OSfDeU\" rel=\"nofollow\">JavaScript Async Await — Web Dev Simplified</a></li>\n<li><a href=\"https://youtu.be/Gjbr21JLfgg?si=SDCVKr9ONw2GsNdT\" rel=\"nofollow\">Promise async and await in javascript — Hitesh Choudhary</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">27. Data Structures</h2><a id=\"user-content-27-data-structures\" class=\"anchor\" aria-label=\"Permalink: 27. Data Structures\" href=\"#27-data-structures\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-26\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-26\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://medium.com/siliconwat/data-structures-in-javascript-1b9aed0ea17c\" rel=\"nofollow\">Data Structures in JavaScript — Thon Ly</a></li>\n<li><a href=\"https://itnext.io/algorithms-and-data-structures-in-javascript-a71548f902cb\" rel=\"nofollow\">Algorithms and Data Structures in JavaScript — Oleksii Trekhleb</a></li>\n<li><a href=\"https://scotch.io/courses/10-need-to-know-javascript-concepts/data-structures-objects-and-arrays\" rel=\"nofollow\">Data Structures: Objects and Arrays ― Chris Nwamba</a></li>\n<li><a href=\"http://blog.benoitvallon.com/data-structures-in-javascript/data-structures-in-javascript/\" rel=\"nofollow\">Data structures in JavaScript — Benoit Vallon</a></li>\n<li><a href=\"https://blog.cloudboost.io/playing-with-data-structures-in-javascript-stack-a55ebe50f29d\" rel=\"nofollow\">Playing with Data Structures in Javascript — Anish K.</a></li>\n<li><a href=\"https://hackernoon.com/the-little-guide-of-queue-in-javascript-4f67e79260d9\" rel=\"nofollow\">The Little Guide of Queue in JavaScript — Germán Cutraro</a></li>\n<li><a href=\"https://github.com/barretlee/algorithms\">All algorithms writing with JavaScript in the book 'Algorithms Fourth Edition'</a></li>\n<li><a href=\"https://github.com/nzakas/computer-science-in-javascript\">Collection of classic computer science paradigms in JavaScript</a></li>\n<li><a href=\"https://github.com/jamiebuilds/itsy-bitsy-data-structures\">All the things you didn't know you wanted to know about data structures</a></li>\n<li><a href=\"https://dev.to/miku86/series/3259\" rel=\"nofollow\">JavaScript Data Structures: 40 Part Series — miku86</a></li>\n<li><a href=\"https://medium.com/javascript-in-plain-english/data-structures-understanding-graphs-82509d35e6b5\" rel=\"nofollow\">Data Structures: Understanding Graphs — Rachel Hawa</a></li>\n<li><a href=\"https://dev.to/freddieduffield/data-structures-two-ways-linked-list-2n61\" rel=\"nofollow\">Data Structures Two Ways: Linked List (Pt 1) — Freddie Duffield</a></li>\n<li><a href=\"https://dev.to/freddieduffield/data-structures-two-ways-linked-list-pt2-2i60\" rel=\"nofollow\">Data Structures Two Ways: Linked List (Pt 2) — Freddie Duffield</a></li>\n<li><a href=\"https://dev.to/amejiarosario/graph-data-structures-for-beginners-5edn\" rel=\"nofollow\">Graph Data Structures Explained in JavaScript — Adrian Mejia</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-25\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-25\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=H_EBPZgiAas&amp;list=PLDmvslp_VR0zYUSth_8O69p4_cmvZEgLa\" rel=\"nofollow\">Algorithms In Javascript | Ace Your Interview — Eduonix Learning Solutions</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Gj5qBheGOEo&amp;list=PLWKjhJtqVAbkso-IbgiiP48n-O-JQA9PJ\" rel=\"nofollow\">Data Structures and Algorithms in JavaScript — freeCodeCamp</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Ymh_AurrMbA\" rel=\"nofollow\">Learning JavaScript Data Structures and Algorithms: Sorting — Packt Video</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=41GSinwoMYA&amp;ab_channel=Academind\" rel=\"nofollow\">JavaScript Data Structures: Getting Started — Academind</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">28. Expensive Operation and Big O Notation</h2><a id=\"user-content-28-expensive-operation-and-big-o-notation\" class=\"anchor\" aria-label=\"Permalink: 28. Expensive Operation and Big O Notation\" href=\"#28-expensive-operation-and-big-o-notation\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-27\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-27\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://medium.com/cesars-tech-insights/big-o-notation-javascript-25c79f50b19b\" rel=\"nofollow\">Big O Notation in Javascript — César Antón Dorantes</a></li>\n<li><a href=\"https://medium.com/javascript-scene/time-complexity-big-o-notation-1a4310c3ee4b\" rel=\"nofollow\">Time Complexity/Big O Notation — Tim Roberts</a></li>\n<li><a href=\"https://medium.com/@gmedina229/big-o-in-javascript-36ff67766051\" rel=\"nofollow\">Big O in JavaScript — Gabriela Medina</a></li>\n<li><a href=\"https://www.bradoncode.com/blog/2012/04/big-o-algorithm-examples-in-javascript.html\" rel=\"nofollow\">Big O Search Algorithms in JavaScript — Bradley Braithwaite</a></li>\n<li><a href=\"https://medium.freecodecamp.org/time-is-complex-but-priceless-f0abd015063c\" rel=\"nofollow\">Algorithms in plain English: time complexity and Big-O Notation — Michael Olorunnisola</a></li>\n<li><a href=\"https://dev.to/lofiandcode/an-introduction-to-big-o-notation-210o\" rel=\"nofollow\">An Introduction to Big O Notation — Joseph Trettevik</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-26\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-26\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=HgA5VOFan5E\" rel=\"nofollow\">JavaScript: Intro to Big O Notation and Function Runtime — Eric Traub</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=KatlvCFHPRo\" rel=\"nofollow\">Essential Big O for JavaScript Developers — Dave Smith</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=ALl86xJiTD8\" rel=\"nofollow\">Big O Notation - Time Complexity Analysis — WebTunings</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=itn09C2ZB9Y\" rel=\"nofollow\">Learn Big O Notation In 12 Minutes - Web Dev Simplified</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=3yUuo7TqMW8\" rel=\"nofollow\">JavaScript Algorithms: Big-O Notation - Codevolution</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=JgWm6sQwS_I\" rel=\"nofollow\">JavaScript Algorithms Crash Course: Learn Algorithms &amp; \"Big O\" from the Ground Up! - Academind</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=LaexPVi1VRE\" rel=\"nofollow\">Big O Notation - Data Structures and Algorithms in Javascript - RoadSideCoder</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">29. Algorithms</h2><a id=\"user-content-29-algorithms\" class=\"anchor\" aria-label=\"Permalink: 29. Algorithms\" href=\"#29-algorithms\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-28\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-28\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/Crizstian/data-structure-and-algorithms-with-ES6\">Data Structures and Algorithms using ES6</a></li>\n<li><a href=\"https://github.com/trekhleb/javascript-algorithms\">Algorithms and data structures implemented in JavaScript with explanations and links to further readings</a></li>\n<li><a href=\"http://www.thatjsdude.com/interview/js1.html\" rel=\"nofollow\">JS: Interview Algorithm</a></li>\n<li><a href=\"https://medium.com/siliconwat/algorithms-in-javascript-b0bed68f4038\" rel=\"nofollow\">Algorithms in JavaScript — Thon Ly</a></li>\n<li><a href=\"https://medium.freecodecamp.org/javascript-objects-square-brackets-and-algorithms-e9a2916dc158\" rel=\"nofollow\">JavaScript Objects, Square Brackets and Algorithms — Dmitri Grabov</a></li>\n<li><a href=\"https://github.com/felipernb/algorithms.js\">Atwood's Law applied to CS101 - Classic algorithms and data structures implemented in JavaScript</a></li>\n<li><a href=\"https://github.com/yangshun/lago\">Data Structures and Algorithms library in JavaScript</a></li>\n<li><a href=\"https://github.com/idosela/algorithms-in-javascript\">Collection of computer science algorithms and data structures written in JavaScript</a></li>\n<li><a href=\"https://dev.to/trekhleb/algorithms-and-data-structures-in-javascript-49i3\" rel=\"nofollow\">Algorithms and Data Structures in JavaScript — Oleksii Trekhleb</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-27\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-27\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li>🎥 <a href=\"https://www.youtube.com/playlist?list=PLC3y8-rFHvwiRYB4-HHKHblh3_bQNJTMa\" rel=\"nofollow\">JavaScript Algorithms - Codevolution</a></li>\n<li>🎥 <a href=\"https://www.youtube.com/watch?v=oBt53YbR9Kk&amp;t=1021s\" rel=\"nofollow\">Dynamic Programming - Learn to Solve Algorithmic Problems &amp; Coding Challenges - FreeCodeCamp</a></li>\n<li>🎥 <a href=\"https://www.youtube.com/playlist?list=PLKhlp2qtUcSZtJefDThsXcsAbRBCSTgW4\" rel=\"nofollow\">Data Structures and Algorithms in Javascript | DSA with JS - RoadsideCoder</a></li>\n<li>🎥 <a href=\"https://www.youtube.com/playlist?list=PLn2ipk-jqgZiAHiA70hOxAj8RMUeqYNK3\" rel=\"nofollow\">Javascript Algorithms + Data Structures - KodingKevin</a></li>\n<li>🎥 <a href=\"https://www.youtube.com/watch?v=41GSinwoMYA\" rel=\"nofollow\">JavaScript Data Structures: Getting Started - Academind</a></li>\n<li>🎥 <a href=\"https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH\" rel=\"nofollow\">Algorithms and Data Structures - The Coding Train (Daniel Shiffman)</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">30. Inheritance, Polymorphism and Code Reuse</h2><a id=\"user-content-30-inheritance-polymorphism-and-code-reuse\" class=\"anchor\" aria-label=\"Permalink: 30. Inheritance, Polymorphism and Code Reuse\" href=\"#30-inheritance-polymorphism-and-code-reuse\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Reference</h3><a id=\"user-content-reference-10\" class=\"anchor\" aria-label=\"Permalink: Reference\" href=\"#reference-10\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Inheritance\" rel=\"nofollow\">Inheritance in JavaScript — MDN</a></li>\n<li><a href=\"https://javascript.info/class-inheritance\" rel=\"nofollow\">Class inheritance, super — JavaScript.Info</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-29\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-29\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://hackernoon.com/inheritance-in-javascript-21d2b82ffa6f\" rel=\"nofollow\">Inheritance in JavaScript — Rupesh Mishra</a></li>\n<li><a href=\"https://www.sitepoint.com/simple-inheritance-javascript/\" rel=\"nofollow\">Simple Inheritance with JavaScript — David Catuhe</a></li>\n<li><a href=\"https://codeburst.io/javascript-inheritance-25fe61ab9f85\" rel=\"nofollow\">JavaScript — Inheritance, delegation patterns and Object linking — NC Patro</a></li>\n<li><a href=\"https://blog.knoldus.com/object-oriented-javascript-polymorphism-with-examples/\" rel=\"nofollow\">Object Oriented JavaScript: Polymorphism with examples — Knoldus Blogs</a></li>\n<li><a href=\"https://medium.com/yld-blog/program-like-proteus-a-beginners-guide-to-polymorphism-in-javascript-867bea7c8be2\" rel=\"nofollow\">Program Like Proteus — A beginner’s guide to polymorphism in Javascript — Sam Galson</a></li>\n<li><a href=\"https://www.sitepoint.com/object-oriented-javascript-deep-dive-es6-classes/\" rel=\"nofollow\">Object-oriented JavaScript: A Deep Dive into ES6 Classes — Jeff Mott</a></li>\n<li><a href=\"https://prototypr.io/post/unlocking-the-power-of-polymorphism-in-javascript-a-deep-dive\" rel=\"nofollow\">Unlocking the Power of Polymorphism in JavaScript: A Deep Dive</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-28\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-28\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=yXlFR81tDBM\" rel=\"nofollow\">Inheritance in JavaScript — kudvenkat</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=RBLIm5LMrmc\" rel=\"nofollow\">JavaScript ES6 Classes and Inheritance — Traversy Media</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=zdovG9cuEBA\" rel=\"nofollow\">Polymorphism in JavaScript — kudvenkat</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">31. Design Patterns</h2><a id=\"user-content-31-design-patterns\" class=\"anchor\" aria-label=\"Permalink: 31. Design Patterns\" href=\"#31-design-patterns\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Books</h3><a id=\"user-content-books-6\" class=\"anchor\" aria-label=\"Permalink: Books\" href=\"#books-6\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://addyosmani.com/resources/essentialjsdesignpatterns/book/\" rel=\"nofollow\">Learning JavaScript Design Patterns — Addy Osmani</a></li>\n<li><a href=\"https://pepa.holla.cz/wp-content/uploads/2016/08/Pro-JavaScript-Design-Patterns.pdf\" rel=\"nofollow\">Pro JavaScript Design Patterns — Ross Harmes and Dustin Diaz</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-30\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-30\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.freecodecamp.org/news/javascript-design-patterns-explained/\" rel=\"nofollow\">JavaScript Design Patterns – Explained with Examples — Germán Cocca</a></li>\n<li><a href=\"https://scotch.io/bar-talk/4-javascript-design-patterns-you-should-know\" rel=\"nofollow\">4 JavaScript Design Patterns You Should Know — Devan Patel</a></li>\n<li><a href=\"https://medium.com/beginners-guide-to-mobile-web-development/javascript-design-patterns-25f0faaaa15\" rel=\"nofollow\">JavaScript Design Patterns – Beginner's Guide to Mobile Web Development — Soumyajit Pathak</a></li>\n<li><a href=\"https://medium.com/front-end-hacking/javascript-design-patterns-ed9d4c144c81\" rel=\"nofollow\">JavaScript Design Patterns — Akash Pal</a></li>\n<li><a href=\"https://blog.bitsrc.io/understanding-design-patterns-in-javascript-13345223f2dd\" rel=\"nofollow\">JavaScript Design Patterns: Understanding Design Patterns in JavaScript - Sukhjinder Arora</a></li>\n<li><a href=\"https://github.com/fbeline/Design-Patterns-JS\">All the 23 (GoF) design patterns implemented in Javascript — Felipe Beline</a></li>\n<li><a href=\"https://medium.com/better-programming/the-power-of-the-module-pattern-in-javascript-3c73f7cd10e8\" rel=\"nofollow\">The Power of the Module Pattern in JavaScript — jsmanifest</a></li>\n<li><a href=\"https://dev.to/omensah/design-patterns-for-developers-using-javascript----part-one--b3e\" rel=\"nofollow\">Design Patterns for Developers using JavaScript pt. I — Oliver Mensah</a></li>\n<li><a href=\"https://dev.to/omensah/design-patterns-for-developers-using-javascript---part-two--3p39\" rel=\"nofollow\">Design Patterns for Developers using JavaScript pt. II — Oliver Mensah</a></li>\n<li><a href=\"https://levelup.gitconnected.com/design-patterns-in-modern-javascript-development-ec84d8be06ca\" rel=\"nofollow\">Design patterns in modern JavaScript development</a></li>\n<li><a href=\"https://dev.to/carlillo/understanding-design-patterns-iterator-using-dev-to-and-medium-social-networks-3bdd\" rel=\"nofollow\">Understanding Design Patterns: Iterator using Dev.to and Medium social networks! — Carlos Caballero</a></li>\n<li><a href=\"https://dev.to/kristijanfistrek/javascript-design-patterns-factory-pattern-562p\" rel=\"nofollow\">JavaScript Design Patterns - Factory Pattern — KristijanFištrek</a></li>\n<li><a href=\"https://medium.com/javascript-in-plain-english/javascript-design-pattern-module-pattern-555737eccecd\" rel=\"nofollow\">JavaScript Design Pattern — Module Pattern - Factory Pattern — Moon</a></li>\n<li><a href=\"https://medium.com/better-programming/design-patterns-null-object-5ee839e37892\" rel=\"nofollow\">Design Patterns: Null Object - Carlos Caballero</a></li>\n<li><a href=\"https://dev.to/francescoxx/strategy-pattern-5oh\" rel=\"nofollow\">Strategy Pattern - Francesco Ciulla</a></li>\n<li><a href=\"https://dev.to/francescoxx/adapter-pattern-5bjk\" rel=\"nofollow\">Adapter Pattern - Francesco Ciulla</a></li>\n<li><a href=\"https://dev.to/jsmanifest/the-power-of-composite-pattern-in-javascript-2732\" rel=\"nofollow\">The Power of Composite Pattern in JavaScript - jsmanifest</a></li>\n<li><a href=\"https://dev.to/bytebodger/in-defense-of-defensive-programming-k45\" rel=\"nofollow\">In Defense of Defensive Programming - Adam Nathaniel Davis</a></li>\n<li><a href=\"https://javascriptpatterns.vercel.app/patterns\" rel=\"nofollow\">JavaScript Patterns Workshop — Lydia Hallie</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-29\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-29\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.udacity.com/course/javascript-design-patterns--ud989\" rel=\"nofollow\">JavaScript Design Patterns — Udacity</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=hO7mzO83N1Q\" rel=\"nofollow\">JavaScript Patterns for 2017 — Scott Allen</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">32. Partial Applications, Currying, Compose and Pipe</h2><a id=\"user-content-32-partial-applications-currying-compose-and-pipe\" class=\"anchor\" aria-label=\"Permalink: 32. Partial Applications, Currying, Compose and Pipe\" href=\"#32-partial-applications-currying-compose-and-pipe\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">Books</h3><a id=\"user-content-books-7\" class=\"anchor\" aria-label=\"Permalink: Books\" href=\"#books-7\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/getify/Functional-Light-JS/blob/master/manuscript/ch3.md\">Functional-Light JavaScript: Ch. 3 - Managing Function Inputs — Kyle Simpson</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-31\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-31\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://medium.com/@pragyan88/writing-middleware-composition-and-currying-elegance-in-javascript-8b15c98a541b\" rel=\"nofollow\">Composition and Currying Elegance in JavaScript — Pragyan Das</a></li>\n<li><a href=\"https://hackernoon.com/javascript-functional-composition-for-every-day-use-22421ef65a10\" rel=\"nofollow\">Functional JavaScript: Function Composition For Every Day Use — Joel Thoms</a></li>\n<li><a href=\"https://medium.com/@acparas/what-i-learned-today-july-2-2017-ab9a46dbf85f\" rel=\"nofollow\">Functional Composition: compose() and pipe() — Anton Paras</a></li>\n<li><a href=\"http://busypeoples.github.io/post/functional-composing-javascript/\" rel=\"nofollow\">Why The Hipsters Compose Everything: Functional Composing In JavaScript — A. Sharif</a></li>\n<li><a href=\"https://jrsinclair.com/articles/2016/gentle-introduction-to-functional-javascript-functions/\" rel=\"nofollow\">A Gentle Introduction to Functional JavaScript pt III: Functions for making functions — James Sinclair</a></li>\n<li><a href=\"https://jsleao.wordpress.com/2015/02/22/curry-and-compose-why-you-should-be-using-something-like-ramda-in-your-code/\" rel=\"nofollow\">Curry And Compose (why you should be using something like ramda in your code) — jsanchesleao</a></li>\n<li><a href=\"https://vanslaars.io/post/create-pipe-function/\" rel=\"nofollow\">Function Composition in JavaScript with Pipe — Andy Van Slaars</a></li>\n<li><a href=\"https://developer.telerik.com/featured/practical-functional-javascript-ramda/\" rel=\"nofollow\">Practical Functional JavaScript with Ramda — Andrew D'Amelio, Yuri Takhteyev</a></li>\n<li><a href=\"https://hackernoon.com/the-beauty-in-partial-application-currying-and-function-composition-d885bdf0d574\" rel=\"nofollow\">The beauty in Partial Application, Currying, and Function Composition — Joel Thoms</a></li>\n<li><a href=\"https://medium.com/javascript-scene/curry-or-partial-application-8150044c78b8\" rel=\"nofollow\">Curry or Partial Application? — Eric Elliott</a></li>\n<li><a href=\"http://benalman.com/news/2012/09/partial-application-in-javascript/\" rel=\"nofollow\">Partial Application in JavaScript — Ben Alman</a></li>\n<li><a href=\"https://hackernoon.com/partial-application-of-functions-dbe7d9b80760\" rel=\"nofollow\">Partial Application of Functions — Functional Reactive Ninja</a></li>\n<li><a href=\"https://towardsdatascience.com/javascript-currying-vs-partial-application-4db5b2442be8\" rel=\"nofollow\">Currying vs Partial Application — Deepak Gupta</a></li>\n<li><a href=\"http://raganwald.com/2015/04/01/partial-application.html\" rel=\"nofollow\">Partial Application in ECMAScript 2015 — Ragan Wald</a></li>\n<li><a href=\"https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-1-1f15e387e536\" rel=\"nofollow\">So You Want to be a Functional Programmer pt. I — Charles Scalfani</a></li>\n<li><a href=\"https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-2-7005682cec4a\" rel=\"nofollow\">So You Want to be a Functional Programmer pt. II — Charles Scalfani</a></li>\n<li><a href=\"https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-3-1b0fd14eb1a7\" rel=\"nofollow\">So You Want to be a Functional Programmer pt. III — Charles Scalfani</a></li>\n<li><a href=\"https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-4-18fbe3ea9e49\" rel=\"nofollow\">So You Want to be a Functional Programmer pt. IV — Charles Scalfani</a></li>\n<li><a href=\"https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-5-c70adc9cf56a\" rel=\"nofollow\">So You Want to be a Functional Programmer pt. V — Charles Scalfani</a></li>\n<li><a href=\"https://medium.freecodecamp.org/an-introduction-to-the-basic-principles-of-functional-programming-a2c2a15c84\" rel=\"nofollow\">An introduction to the basic principles of Functional Programming — TK</a></li>\n<li><a href=\"https://medium.com/the-renaissance-developer/concepts-of-functional-programming-in-javascript-6bc84220d2aa\" rel=\"nofollow\">Concepts of Functional Programming in Javascript — TK</a></li>\n<li><a href=\"https://medium.freecodecamp.org/an-introduction-to-functional-programming-style-in-javascript-71fcc050f064\" rel=\"nofollow\">An Introduction to Functional Programming Style in JavaScript — JavaScript Teacher</a></li>\n<li><a href=\"https://medium.freecodecamp.org/a-practical-guide-to-writing-more-functional-javascript-db49409f71\" rel=\"nofollow\">A practical guide to writing more functional JavaScript — Nadeesha Cabral</a></li>\n<li><a href=\"https://dev.to/benlesh/a-simple-explanation-of-functional-pipe-in-javascript-2hbj\" rel=\"nofollow\">A simple explanation of functional pipe in JavaScript — Ben Lesh</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-30\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-30\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.youtube.com/watch?v=Wl2ejJOqHUU\" rel=\"nofollow\">Compose vs Pipe: Functional Programming in JavaScript — Chyld Studios</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=jigHxo9YR30\" rel=\"nofollow\">JavaScript Functional Programing: Compose — Theodore Anderson</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=mth5WpEc4Qs\" rel=\"nofollow\">Function Composition - Functional JavaScript — NWCalvank</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=Uam37AlzPYw\" rel=\"nofollow\">JavaScript Function Composition Explained — Theodore Anderson</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=VGB9HbL1GHk\" rel=\"nofollow\">Let's code with function composition — Fun Fun Function</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=DzLkRsUN2vE\" rel=\"nofollow\">Partial Application vs. Currying — NWCalvank</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=jkebgHEcvac\" rel=\"nofollow\">JavaScript Partial Application — Theodore Anderson</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=75W8UPQ5l7k&amp;t=261s\" rel=\"nofollow\">call, apply and bind method in JavaScript</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<hr>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\">33. Clean Code</h2><a id=\"user-content-33-clean-code\" class=\"anchor\" aria-label=\"Permalink: 33. Clean Code\" href=\"#33-clean-code\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\"><img align=\"center\" width=\"40px\" height=\"40px\" src=\"https://camo.githubusercontent.com/892dfa07a569b54f20e081608a46ddaad7950148d186410ee92288d1acd55f10/68747470733a2f2f63646e2d69636f6e732d706e672e666c617469636f6e2e636f6d2f3531322f313934352f313934353934302e706e67\" data-canonical-src=\"https://cdn-icons-png.flaticon.com/512/1945/1945940.png\" style=\"max-width: 100%;\"></a> Articles</h3><a id=\"user-content--articles-32\" class=\"anchor\" aria-label=\"Permalink: Articles\" href=\"#-articles-32\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li><a href=\"https://www.freecodecamp.org/news/clean-coding-for-beginners/\" rel=\"nofollow\">Clean Code Explained – A Practical Introduction to Clean Coding for Beginners — freeCodeCamp</a></li>\n<li><a href=\"https://github.com/ryanmcdermott/clean-code-javascript\">Clean Code concepts adapted for JavaScript — Ryan McDermott</a></li>\n<li><a href=\"https://www.atyantik.com/clean-code-practices-javascript/\" rel=\"nofollow\">Clean Code Practice: How to write clean code — Tirth Bodawala</a></li>\n<li><a href=\"https://medium.com/@kevin_peters/function-parameters-in-javascript-clean-code-4caac109159b\" rel=\"nofollow\">Function parameters in JavaScript Clean Code — Kevin Peters</a></li>\n<li><a href=\"https://codeburst.io/keeping-your-code-clean-d30bcffd1a10\" rel=\"nofollow\">Keeping your code clean — Samuel James</a></li>\n<li><a href=\"https://www.sitepoint.com/modern-javascript-best-practices/\" rel=\"nofollow\">Best Practices for Using Modern JavaScript Syntax — M. David Green</a></li>\n<li><a href=\"https://github.com/cross-js/cross-js\">best practices for cross node/web development - Jimmy Wärting</a></li>\n<li><a href=\"https://dev.to/ganderzz/on-writing-clean-code-57cm\" rel=\"nofollow\">Writing Clean Code - Dylan Paulus</a></li>\n<li><a href=\"https://dev.to/nityeshaga/writing-clean-code-and-the-practice-of-programming-actionable-advice-for-beginners-5f0k\" rel=\"nofollow\">Writing Clean Code and The Practice of Programming - Nityesh Agarwal</a></li>\n<li><a href=\"https://dev.to/d_ir/clean-code-dirty-code-human-code-6nm\" rel=\"nofollow\">Clean code, dirty code, human code - Daniel Irvine</a></li>\n<li><a href=\"https://dev.to/taillogs/practical-ways-to-write-better-javascript-26d4\" rel=\"nofollow\">Practical Ways to Write Better JavaScript - Ryland G</a></li>\n<li><a href=\"https://medium.com/swlh/the-must-know-clean-code-principles-1371a14a2e75\" rel=\"nofollow\">The Must-Know Clean Code Principles - Kesk on Medium</a></li>\n<li><a href=\"https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/\" rel=\"nofollow\">The Clean Code Book - Robert C Martin</a></li>\n<li><a href=\"https://www.freecodecamp.org/news/how-to-use-destructuring-in-javascript-to-write-cleaner-more-powerful-code-9d1b38794050/\" rel=\"nofollow\">How to use destructuring in JavaScript to write cleaner, more powerful code - freecodecamp</a></li>\n<li><a href=\"https://betterprogramming.pub/write-clean-code-using-javascript-object-destructuring-3551302130e7\" rel=\"nofollow\">Write Clean Code Using JavaScript Object Destructuring - Asel Siriwardena</a></li>\n</ul>\n<div class=\"markdown-heading\" dir=\"auto\"><h3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\"><img align=\"center\" width=\"40\" height=\"40\" src=\"https://camo.githubusercontent.com/9233a84fa71d0983c50a601fd49366ea022ddfa39034cf74b27c22f092287b95/68747470733a2f2f696d672e69636f6e73382e636f6d2f6475736b2f36342f766964656f2e706e67\" alt=\"video\" data-canonical-src=\"https://img.icons8.com/dusk/64/video.png\" style=\"max-width: 100%;\"></a> Videos</h3><a id=\"user-content---videos-31\" class=\"anchor\" aria-label=\"Permalink: Videos\" href=\"#--videos-31\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<ul dir=\"auto\">\n<li>🎥 <a href=\"https://www.youtube.com/watch?v=Mus_vwhTCq0\" rel=\"nofollow\">JavaScript Pro Tips - Code This, NOT That</a></li>\n<li>🎥 <a href=\"https://www.youtube.com/watch?v=b9c5GmmS7ks&amp;list=PLWKjhJtqVAbkK24EaPurzMq0-kw5U9pJh&amp;index=1\" rel=\"nofollow\">Clean Code playlist - Beau teaches</a></li>\n<li>🎥 <a href=\"https://youtu.be/RMN_bkZ1KM0?si=Ssg3cNZ_DB7CIwKQ\" rel=\"nofollow\">JavaScript Best Practices and Coding Conventions - Write Clean Code</a></li>\n<li>🎥 <a href=\"https://youtu.be/vPXzVNmCPg4?si=QR1k4E6Zx5H4mfcs\" rel=\"nofollow\">JavaScript Clean Code</a></li>\n<li>🎥 <a href=\"https://www.youtube.com/watch?v=0wHyoBPc6zs\" rel=\"nofollow\">Tips On Learning How To Code</a></li>\n</ul>\n<p dir=\"auto\"><strong><a href=\"#table-of-contents\">⬆ Back to Top</a></strong></p>\n<div class=\"markdown-heading\" dir=\"auto\"><h2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/519c64341d1940b47d57be0a09d138a465909748a1a0446af0f97bcea64b1b99/68747470733a2f2f6d6f65696e2e766964656f2f77702d636f6e74656e742f75706c6f6164732f323032322f30352f6c6963656e73652d4749462d43657274696669636174652d526f79616c74792d467265652d416e696d617465642d49636f6e2d33353070782d61667465722d656666656374732d70726f6a6563742e676966\"><img align=\"center\" width=\"50px\" height=\"50px\" src=\"https://camo.githubusercontent.com/519c64341d1940b47d57be0a09d138a465909748a1a0446af0f97bcea64b1b99/68747470733a2f2f6d6f65696e2e766964656f2f77702d636f6e74656e742f75706c6f6164732f323032322f30352f6c6963656e73652d4749462d43657274696669636174652d526f79616c74792d467265652d416e696d617465642d49636f6e2d33353070782d61667465722d656666656374732d70726f6a6563742e676966\" data-animated-image=\"\" data-canonical-src=\"https://moein.video/wp-content/uploads/2022/05/license-GIF-Certificate-Royalty-Free-Animated-Icon-350px-after-effects-project.gif\" style=\"max-width: 100%;\"></a> License <a id=\"user-content-License\"></a></h2><a id=\"user-content--license-\" class=\"anchor\" aria-label=\"Permalink: License \" href=\"#-license-\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path></svg></a></div>\n<p dir=\"auto\">This software is licensed under MIT License, See <a href=\"https://github.com/leonardomso/33-js-concepts/blob/master/LICENSE\">License</a> for more information ©Leonardo Maldonado.</p>\n</article>",
"loaded": true,
"timedOut": false,
"errorMessage": null,
"headerInfo": {
"toc": [
{
"level": 1,
"text": "\n 33 Concepts Every JavaScript Developer Should Know\n ",
"anchor": "----------33-concepts-every-javascript-developer-should-know--",
"htmlText": "\n 33 Concepts Every JavaScript Developer Should Know\n "
},
{
"level": 2,
"text": "Introduction",
"anchor": "introduction",
"htmlText": "Introduction"
},
{
"level": 2,
"text": "Community",
"anchor": "community",
"htmlText": "Community"
},
{
"level": 2,
"text": "Table of Contents",
"anchor": "-table-of-contents",
"htmlText": "Table of Contents"
},
{
"level": 2,
"text": "1. Call Stack",
"anchor": "1-call-stack",
"htmlText": "1. Call Stack"
},
{
"level": 3,
"text": "Reference",
"anchor": "reference",
"htmlText": "Reference"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos",
"htmlText": " Videos"
},
{
"level": 2,
"text": "2. Primitive Types",
"anchor": "2-primitive-types",
"htmlText": "2. Primitive Types"
},
{
"level": 3,
"text": "Reference",
"anchor": "reference-1",
"htmlText": "Reference"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-1",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-1",
"htmlText": " Videos"
},
{
"level": 2,
"text": "3. Value Types and Reference Types",
"anchor": "3-value-types-and-reference-types",
"htmlText": "3. Value Types and Reference Types"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-2",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-2",
"htmlText": " Videos"
},
{
"level": 2,
"text": "4. Implicit, Explicit, Nominal, Structuring and Duck Typing",
"anchor": "4-implicit-explicit-nominal-structuring-and-duck-typing",
"htmlText": "4. Implicit, Explicit, Nominal, Structuring and Duck Typing"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-3",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-3",
"htmlText": " Videos"
},
{
"level": 3,
"text": "Books",
"anchor": "books",
"htmlText": "Books"
},
{
"level": 2,
"text": "5. == vs === vs typeof",
"anchor": "5--vs--vs-typeof",
"htmlText": "5. == vs === vs typeof"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-4",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-4",
"htmlText": " Videos"
},
{
"level": 2,
"text": "6. Function Scope, Block Scope and Lexical Scope",
"anchor": "6-function-scope-block-scope-and-lexical-scope",
"htmlText": "6. Function Scope, Block Scope and Lexical Scope"
},
{
"level": 3,
"text": "Books",
"anchor": "books-1",
"htmlText": "Books"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-5",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-5",
"htmlText": " Videos"
},
{
"level": 2,
"text": "7. Expression vs Statement",
"anchor": "7-expression-vs-statement",
"htmlText": "7. Expression vs Statement"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-6",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-6",
"htmlText": " Videos"
},
{
"level": 2,
"text": "8. IIFE, Modules and Namespaces",
"anchor": "8-iife-modules-and-namespaces",
"htmlText": "8. IIFE, Modules and Namespaces"
},
{
"level": 3,
"text": "Reference",
"anchor": "reference-2",
"htmlText": "Reference"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-7",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-7",
"htmlText": " Videos"
},
{
"level": 2,
"text": "9. Message Queue and Event Loop",
"anchor": "9-message-queue-and-event-loop",
"htmlText": "9. Message Queue and Event Loop"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-8",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-8",
"htmlText": " Videos"
},
{
"level": 2,
"text": "10. setTimeout, setInterval and requestAnimationFrame",
"anchor": "10-settimeout-setinterval-and-requestanimationframe",
"htmlText": "10. setTimeout, setInterval and requestAnimationFrame"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-9",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-9",
"htmlText": " Videos"
},
{
"level": 2,
"text": "11. JavaScript Engines",
"anchor": "11-javascript-engines",
"htmlText": "11. JavaScript Engines"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-10",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-10",
"htmlText": " Videos"
},
{
"level": 2,
"text": "12. Bitwise Operators, Type Arrays and Array Buffers",
"anchor": "12-bitwise-operators-type-arrays-and-array-buffers",
"htmlText": "12. Bitwise Operators, Type Arrays and Array Buffers"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-11",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-11",
"htmlText": " Videos"
},
{
"level": 2,
"text": "13. DOM and Layout Trees",
"anchor": "13-dom-and-layout-trees",
"htmlText": "13. DOM and Layout Trees"
},
{
"level": 3,
"text": "Books",
"anchor": "books-2",
"htmlText": "Books"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-12",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-12",
"htmlText": " Videos"
},
{
"level": 2,
"text": "14. Factories and Classes",
"anchor": "14-factories-and-classes",
"htmlText": "14. Factories and Classes"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-13",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-13",
"htmlText": " Videos"
},
{
"level": 2,
"text": "15. this, call, apply and bind",
"anchor": "15-this-call-apply-and-bind",
"htmlText": "15. this, call, apply and bind"
},
{
"level": 3,
"text": "Reference",
"anchor": "reference-3",
"htmlText": "Reference"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-14",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-14",
"htmlText": " Videos"
},
{
"level": 2,
"text": "16. new, Constructor, instanceof and Instances",
"anchor": "16-new-constructor-instanceof-and-instances",
"htmlText": "16. new, Constructor, instanceof and Instances"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-15",
"htmlText": " Articles"
},
{
"level": 2,
"text": "17. Prototype Inheritance and Prototype Chain",
"anchor": "17-prototype-inheritance-and-prototype-chain",
"htmlText": "17. Prototype Inheritance and Prototype Chain"
},
{
"level": 3,
"text": "Reference",
"anchor": "reference-4",
"htmlText": "Reference"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-16",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-15",
"htmlText": " Videos"
},
{
"level": 3,
"text": "Books",
"anchor": "books-3",
"htmlText": "Books"
},
{
"level": 2,
"text": "18. Object.create and Object.assign",
"anchor": "18-objectcreate-and-objectassign",
"htmlText": "18. Object.create and Object.assign"
},
{
"level": 3,
"text": "Reference",
"anchor": "reference-5",
"htmlText": "Reference"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-17",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-16",
"htmlText": " Videos"
},
{
"level": 2,
"text": "19. map, reduce, filter",
"anchor": "19-map-reduce-filter",
"htmlText": "19. map, reduce, filter"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-18",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-17",
"htmlText": " Videos"
},
{
"level": 2,
"text": "20. Pure Functions, Side Effects, State Mutation and Event Propagation",
"anchor": "20-pure-functions-side-effects-state-mutation-and-event-propagation",
"htmlText": "20. Pure Functions, Side Effects, State Mutation and Event Propagation"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-19",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-18",
"htmlText": " Videos"
},
{
"level": 2,
"text": "21. Closures",
"anchor": "21-closures",
"htmlText": "21. Closures"
},
{
"level": 3,
"text": "Reference",
"anchor": "reference-6",
"htmlText": "Reference"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-20",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-19",
"htmlText": " Videos"
},
{
"level": 2,
"text": "22. High Order Functions",
"anchor": "22-high-order-functions",
"htmlText": "22. High Order Functions"
},
{
"level": 3,
"text": "Books",
"anchor": "books-4",
"htmlText": "Books"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-21",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-20",
"htmlText": " Videos"
},
{
"level": 2,
"text": "23. Recursion",
"anchor": "23-recursion",
"htmlText": "23. Recursion"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-22",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-21",
"htmlText": " Videos"
},
{
"level": 2,
"text": "24. Collections and Generators",
"anchor": "24-collections-and-generators",
"htmlText": "24. Collections and Generators"
},
{
"level": 3,
"text": "Reference",
"anchor": "reference-7",
"htmlText": "Reference"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-23",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-22",
"htmlText": " Videos"
},
{
"level": 2,
"text": "25. Promises",
"anchor": "25-promises",
"htmlText": "25. Promises"
},
{
"level": 3,
"text": "Reference",
"anchor": "reference-8",
"htmlText": "Reference"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-24",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-23",
"htmlText": " Videos"
},
{
"level": 2,
"text": "26. async/await",
"anchor": "26-asyncawait",
"htmlText": "26. async/await"
},
{
"level": 3,
"text": "Reference",
"anchor": "reference-9",
"htmlText": "Reference"
},
{
"level": 3,
"text": "Books",
"anchor": "books-5",
"htmlText": "Books"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-25",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-24",
"htmlText": " Videos"
},
{
"level": 2,
"text": "27. Data Structures",
"anchor": "27-data-structures",
"htmlText": "27. Data Structures"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-26",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-25",
"htmlText": " Videos"
},
{
"level": 2,
"text": "28. Expensive Operation and Big O Notation",
"anchor": "28-expensive-operation-and-big-o-notation",
"htmlText": "28. Expensive Operation and Big O Notation"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-27",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-26",
"htmlText": " Videos"
},
{
"level": 2,
"text": "29. Algorithms",
"anchor": "29-algorithms",
"htmlText": "29. Algorithms"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-28",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-27",
"htmlText": " Videos"
},
{
"level": 2,
"text": "30. Inheritance, Polymorphism and Code Reuse",
"anchor": "30-inheritance-polymorphism-and-code-reuse",
"htmlText": "30. Inheritance, Polymorphism and Code Reuse"
},
{
"level": 3,
"text": "Reference",
"anchor": "reference-10",
"htmlText": "Reference"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-29",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-28",
"htmlText": " Videos"
},
{
"level": 2,
"text": "31. Design Patterns",
"anchor": "31-design-patterns",
"htmlText": "31. Design Patterns"
},
{
"level": 3,
"text": "Books",
"anchor": "books-6",
"htmlText": "Books"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-30",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-29",
"htmlText": " Videos"
},
{
"level": 2,
"text": "32. Partial Applications, Currying, Compose and Pipe",
"anchor": "32-partial-applications-currying-compose-and-pipe",
"htmlText": "32. Partial Applications, Currying, Compose and Pipe"
},
{
"level": 3,
"text": "Books",
"anchor": "books-7",
"htmlText": "Books"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-31",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-30",
"htmlText": " Videos"
},
{
"level": 2,
"text": "33. Clean Code",
"anchor": "33-clean-code",
"htmlText": "33. Clean Code"
},
{
"level": 3,
"text": " Articles",
"anchor": "-articles-32",
"htmlText": " Articles"
},
{
"level": 3,
"text": " Videos",
"anchor": "--videos-31",
"htmlText": " Videos"
},
{
"level": 2,
"text": " License ",
"anchor": "-license-",
"htmlText": " License "
}
],
"siteNavLoginPath": "/login?return_to=https%3A%2F%2Fgithub.com%2Fleonardomso%2F33-js-concepts"
}
},
{
"displayName": "CODE_OF_CONDUCT.md",
"repoName": "33-js-concepts",
"refName": "master",
"path": "CODE_OF_CONDUCT.md",
"preferredFileType": "code_of_conduct",
"tabName": "Code of conduct",
"richText": null,
"loaded": false,
"timedOut": false,
"errorMessage": null,
"headerInfo": {
"toc": null,
"siteNavLoginPath": "/login?return_to=https%3A%2F%2Fgithub.com%2Fleonardomso%2F33-js-concepts"
}
},
{
"displayName": "LICENSE",
"repoName": "33-js-concepts",
"refName": "master",
"path": "LICENSE",
"preferredFileType": "license",
"tabName": "MIT",
"richText": null,
"loaded": false,
"timedOut": false,
"errorMessage": null,
"headerInfo": {
"toc": null,
"siteNavLoginPath": "/login?return_to=https%3A%2F%2Fgithub.com%2Fleonardomso%2F33-js-concepts"
}
}
],
"overviewFilesProcessingTime": 39.462227000000006
}
},
"appPayload": {
"helpUrl": "https://docs.github.com",
"findFileWorkerPath": "/assets-cdn/worker/find-file-worker-a007d7f370d6.js",
"findInFileWorkerPath": "/assets-cdn/worker/find-in-file-worker-d0f0ff069004.js",
"githubDevUrl": null,
"enabled_features": {
"code_nav_ui_events": false,
"react_blob_overlay": false,
"copilot_conversational_ux_embedding_update": false,
"copilot_smell_icebreaker_ux": true,
"copilot_workspace": false
}
}
}
}
{
"accept-ranges": "bytes",
"cache-control": "max-age=0, private, must-revalidate",
"content-encoding": "gzip",
"content-security-policy": "default-src 'none'; base-uri 'self'; child-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com api.githubcopilot.com objects-origin.githubusercontent.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.com/assets-cdn/worker/ gist.github.com/assets-cdn/worker/",
"content-type": "text/html; charset=utf-8",
"date": "Sat, 04 May 2024 00:51:06 GMT",
"etag": "7c39b4700677a30763fee73ac6167f3d",
"referrer-policy": "no-referrer-when-downgrade",
"server": "GitHub.com",
"set-cookie": "logged_in=no; Path=/; Domain=github.com; Expires=Sun, 04 May 2025 00:51:06 GMT; HttpOnly; Secure; SameSite=Lax",
"strict-transport-security": "max-age=31536000; includeSubdomains; preload",
"transfer-encoding": "chunked",
"vary": "X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, Accept-Encoding, Accept, X-Requested-With",
"x-content-type-options": "nosniff",
"x-frame-options": "deny",
"x-github-request-id": "9952:35F9C4:9630974:D2F551C:6635867A",
"x-xss-protection": "0"
}